
On 3 Jan 2014, at 22:57, Albert Y. C. Lai wrote:
On 14-01-03 11:28 AM, Rob Arthan wrote:
roll n = take n . randomRs ('1', '6') . mkStdGen $ n
However, this produces a string beginning with a '6' for 0 <= n <= 53667.
It seems to me such small numbers do not have enough entropy to be worthy seeds to begin with. Say, in the 64-bit binary form of 53667, how many consecutive 0's are there?
I don't think the entropy of the number considered as a string of bits is relevant. The later part of my post strongly suggests that there is a pattern. And in fact this pattern turns out to repeat indefinitely. The following calculates about 10^7+1 values starting with a large integer that I obtained from /dev/urandom: map (\l -> (head l, length l)) . group . map (fst . randomR (1, 6) . mkStdGen) $ [0x383b0d54718ac75f..0x383b0d54718ac75f+1000000] The result is: [(2,36076),(1,53669),(6,53668),(5,53668),(4,53669),(3,53668),(2,53668),(1,53669),(6,53668),(5,53668),(4,53668),(3,53669),(2,53668),(1,53668),(6,53669),(5,53668),(4,53668),(3,53669),(2,51563)] So we keep on getting long runs of seed values that produce the same value on the first call of randomR even when we start with a seed that will have around 60 bits of entropy (if /dev/urandom on my heavily used iMac is doing its job). Regards, Rob.
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe