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