On 9/21/18 6:38 PM, Tierney, Luke wrote: > Not sure what should happen theoretically for the code in vseq.c, but > I see the same pattern with the R generators I tried (default, > Super-Duper, and L'Ecuyer) and with with bash $RANDOM using > > N <- 10000 > X1 <- replicate(N, as.integer(system("bash -c 'echo $RANDOM'", intern = > TRUE))) > X2 <- replicate(N, as.integer(system("bash -c 'echo $RANDOM'", intern = > TRUE))) > X <- X1 + 2 ^ 15 * (X2 > 2^14) > > and with numbers from random.org > > library(random) > X <- randomNumbers(N, 0, 2^16-1, col = 1) > > So I'm not convinced there is an issue. There is an issue, but it is in vseq.c.
The plot I found striking was this: http://people.redhat.com/sgrubb/files/r-random.jpg It shows a scatter plot that is bounded to some rectangle where the upper right and lower left corner are empty. Roughly speaking, X and Y correspond to *consecutive differences* between random draws. It is obvious that differences between random draws are bounded by the range of the RNG, and that there cannot be two *differences in a row* that are close to the maximum (or minimum). Hence the expected shape for such a scatter plot is a rectangle with two corners being forbidden. Within the allowed region, there should be no structure what so ever (given enough draws). And that was striking about the above picture: It showed clear vertical bands which should not be there. MT does fail some statistical tests, but it cannot be brought down that easily. Interestingly, I first used Dirk's C++ function for convenience, and that did *not* show these bands. But when I compiled vseq.c I could reproduce this. To cut this short: There is an error in vseq.c when the numbers are read in: tmp = strtoul(buf, NULL, 16); The third argument to strtoul is the base in which the numbers should be interpreted. However, R has written numbers with base 10. Those can be interpreted as base 16, but they will mean something different. Once one changes the above line to tmp = strtoul(buf, NULL, 10); the bands do disappear. cheerio ralf -- Ralf Stubner Senior Software Engineer / Trainer daqana GmbH Dortustraße 48 14467 Potsdam T: +49 331 23 61 93 11 F: +49 331 23 61 93 90 M: +49 162 20 91 196 Mail: ralf.stub...@daqana.com Sitz: Potsdam Register: AG Potsdam HRB 27966 P Ust.-IdNr.: DE300072622 Geschäftsführer: Prof. Dr. Dr. Karl-Kuno Kunze
signature.asc
Description: OpenPGP digital signature
______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel