Kirk Haines wrote: > Iowa includes a class, Iowa::ISAAC, which is a pure ruby implementation of > the ISAAC random number generator. > > Here's the page that describes the algorithm: > > http://burtleburtle.net/bob/rand/isaac.html > > Basically, ISAAC is a very good random number generator, with no cycles > shorter than 2^40, with a very, very long expected cycle, and with an > unbiased and uniform distribution. > > Is there any interest in this existing in a package of its own? If so, I > could repackage it and release it seperately. > > > Kirk Haines How does ISAAC hold up under Marsaglia's "Die-Hard" test suite? I believe Ruby is currently providing an implementation of the Mersenne Twister, which has aced the Die-Hard tests and has a cycle length on the order of 10^600, so I don't see a compelling reason to go with something else in terms of the quality of the random numbers. The thing I WOULD like to see is Ruby's generator wrapped up as a class which provides separate, independent random stream objects. That would enable Ruby to be used for serious simulation work.[**] --paul [**] - I've separated the following because most people probably aren't interested in the gory details. Read on at your own peril of being bored. To obtain greater statistical "leverage" from a simulation study, it's sometimes helpful to make multiple runs of your model in which you induce positive or negative correlation between pairs of models. To get the desired correlation, you need to keep the random numbers synchronized between the two systems, so that the same value is used in the same place and same simulated time. If everybody is drawing from the same source of randomness, and there are different numbers of objects in the two systems being compared, it's nearly impossible to maintain synchronization. The most common solution is to give each object its own personal stream of random numbers, seeded independently of all the others. Synchronization is still non-trivial, but at least it's possible if you can have multiple separately seeded generators.