Hi cafe. recently I was looking at various possibilities of generating random numbers in Haskell. Apparently, the main problem is the 'split' function in the System.Random.RandomGen class. Since it is rarely needed in imperative programs, not much is known how to implement it safely. It's documentation says:

> The split operation allows one to obtain two distinct random number > generators. This is very useful in functional programs (for example, > when passing a random number generator down to recursive calls), but > very little work has been done on statistically robust implementations > of split ([System.Random, System.Random] are the only examples we know > of). I consulted it with a friend, who has done much work in the area of random number generators. He suggested that this might be implemented using a random number generator with a very large period, such as Mersene Twister (MT19937 has a period of 2^19937-1). A pair of splitted generators states could be positioned sufficiently far enough from each other so that in practice they never reach each other, and in such a way that successive splits (in practice) never meet. I searched Hackage, where I found a few implementations of Mersene Twister, but AFAIK no one actually implements neither RandomGen nor 'split' alone. I wonder why -- is RandomGen inconvenient or obsolete in some way? Or just nobody tried? With best regards, Petr Pudlak PS: Sorry if you get multiple copies, I had problems sending the mail. _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe