【发布时间】:2011-12-07 13:50:29
【问题描述】:
如何在不使用任何种子的情况下从范围 (a, b) 中生成 Haskell 中的随机数?
函数应该返回一个 Int 而不是 IO Int。 我有一个函数 X,它接受和 Int 和其他参数并输出不是 IO 的东西。
如果这不可能,我如何使用 Time 库生成种子并使用 mkStdGen 生成范围内的随机数?
任何帮助将不胜感激。
【问题讨论】:
-
stackoverflow.com/a/2738824/570689 - 类似问题的好答案
-
听起来你可以期待的最好的结果是
randomInt lo hi = lo或类似的东西。如果没有某种种子或 IO,函数每次都必须返回相同的值。并且下限与任何其他Int一样随机。 :) -
“任何考虑产生随机数字的算术方法的人,当然都处于犯罪状态。”归功于 John Von Neumann in Knuth, D. 计算机编程的艺术,第 2 卷,第 3 页。 1(1981)。
-
我相信在没有 IO 或种子值的情况下在 Haskell 中获取随机数的最佳方法是使用 a function like this。