StdGen does not generate 0
genRange for StdGen returns (0,2147483562). However, as far as I can tell, StdGen doesn't generate 0.
This code performs 200 billion iterations of next on a StdGen. I ran it and it output Nothing. The probability that no 0 was generated by chance is approximately e^-200/2.147^ =~ 10^-40^.
` import System.Random import Data.Int
find0 :: StdGen -> Int64 -> Maybe Int64 find0 g0 n0 = aux g0 n0 where aux _ 0 = Nothing aux g r = let (v,g') = next g in if v == 0 then Just (n0 - r + 1) else aux g' (r-1)
main :: IO () main = print $ find0 (mkStdGen 1234) 200000000000 `
Trac metadata
| Trac field | Value |
|---|---|
| Version | 7.9 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | libraries/random |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture |