[Rd] , Problem in random number generation for Marsaglia-Multicarry +, Kinderman-Ramage

André GILLIBERT @ndre @end|ng |rom g||||bert@|r
Fri Aug 13 13:26:43 CEST 2021

Thank you.

It looks like the M-M generator is deeply flawed, although R 
implementation seems to be faithful.

I can understand that R keeps this generator for historical reasons.

However, R should at least warn that this generator is buggy and should 
not be used!

That could be as simple as a Warning message generated by set.seed().




 > With these matters, one has to be careful to distinguish between 
method error and implementation error.
 > The reason for changing the RNG setup in R v. 1.7.0 was pretty much 
this kind of unfortunate interaction between M-M and K-R. There are even 
more egregious examples for the distribution of maxima of normal 
variables. Try e.g.
 > RNGversion("1.6.0") # Marsaglia-Multicarry, Kinderman-Ramage
 >  s <- replicate(1e6,max(rnorm(10)))
 >  plot(density(s))
 > (A further bug in K-R was fixed in 1.7.1, but that is tangential to 
 > A glimpse of the source of the problem is seen in the 
"microcorrelations" in this:
 > RNGkind("Mar");m <- matrix(runif(4e7),2)
 >  plot(m[1,],m[2,],xlim=c(0,1e-3),pch=".")
 >  m <- matrix(runif(4e7),2)
 >  points(m[1,],m[2,],pch=".")
 > These examples are from 2003, so the issue has been known for almost 
2 decades. However, to the best of our knowledge, the M-M RNG is a 
faithful implementation of their > method, so we have left the RNG in 
R's arsenal, in case someone needed it for some specific purpose.
 > - pd

More information about the R-devel mailing list