simardr@IRO.UMontreal.CA
2003-Jan-09 23:32 UTC
[Rd] RNG.c: unif_rand, MARSAGLIA_MULTICARRY (PR#2437)
Full_Name: Richard Simard
Version:
OS: Linux
Submission from: (NULL) (132.204.25.139)
In the random number generator MARSAGLIA_MULTICARRY, your algorithm is
different than the one in the original reference that you give in the R manual:
Marsaglia in his post to the mailing list {\it sci.stat.math} on September 29,
1997.
The last line in the R program has a ^
while Marsaglia's algorithm has a +.
This gives very different random number generators.
The full line in RNG.c is:
return ((I1 << 16)^(I2 & 0177777)) * i2_32m1; /* in [0,1) */
Peter Dalgaard BSA
2003-Jan-09 23:49 UTC
[Rd] RNG.c: unif_rand, MARSAGLIA_MULTICARRY (PR#2437)
simardr@IRO.UMontreal.CA writes:> Full_Name: Richard Simard > Version: > OS: Linux > Submission from: (NULL) (132.204.25.139) > > > In the random number generator MARSAGLIA_MULTICARRY, your algorithm is > different than the one in the original reference that you give in the R manual: > Marsaglia in his post to the mailing list {\it sci.stat.math} on September 29, > 1997. > The last line in the R program has a ^ > while Marsaglia's algorithm has a +. > This gives very different random number generators. > > The full line in RNG.c is: > return ((I1 << 16)^(I2 & 0177777)) * i2_32m1; /* in [0,1) */Did you actually try that? As far as I can see the first operand will be (32-bit binary) xxxxxxxxxxxxxxxx0000000000000000 and the other one is 0000000000000000xxxxxxxxxxxxxxxx so it is the same whether you add them or use bitwise OR or bitwise XOR. -- O__ ---- Peter Dalgaard Blegdamsvej 3 c/ /'_ --- Dept. of Biostatistics 2200 Cph. N (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 ~~~~~~~~~~ - (p.dalgaard@biostat.ku.dk) FAX: (+45) 35327907