I'm trying to figure out why I'm getting different answers between the original C-implementation of the Mersenne-Twister algorithm and the rand function in SAS. If I run the C-code (from here: http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/MT2002/emt19937ar.html), with a seed of 5489 the first five random numbers generated are: 3499211612 581869302 3890346734 3586334585 545404204 This produces unsigned 32-bit integers. To get something that I can compare with rand('uniform') in SAS I've just divided by 4294967295 = (2^32-1), which gives: 0.814723692, 0.135477004, 0.905791934, 0.83500859, 0.12698681 ("series 1") I've then run the following data step in SAS with the intention of getting the same as series 1: data A;
call streaminit(5489); /* set random number seed */
do i = 1 to 5;
u = rand("Uniform"); /* u ~ U(0,1) */
output;
end;
run; But this generates the following sequence: 0.204043448, 0.4575133489, 0.3245377645, 0.1522461593, 0.6659437388 I'm a bit stumped as to why these are different. I've looked at the SAS documentation on the rand function already (http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a001466748.htm), but it doesn't help. The version of SAS I'm using is 9.3 (32 bit). Very grateful for any suggestions! Thanks Michael
... View more