[Rd] RNG.c: unif_rand, MARSAGLIA_MULTICARRY (PR#2437)
Peter Dalgaard BSA
p.dalgaard@biostat.ku.dk
Thu Jan 9 23:49:02 2003
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