我在阅读第9章(更多输入和更多输出)的了解您对Haskell的好好处。现在我要学习如何在Haskell中生成随机数字(这太令人兴奋了!)。以下是本书中的一段引文:在Haskell中生成随机数
要手动生成随机生成器,请使用
mkStdGenfunction
。它有一个mkStdGen :: Int -> StdGen
的类型。它需要一个整数,并基于此,给我们一个随机生成器。好吧,我们尝试使用random
和mkStdGenin
串联来获得(几乎)随机数。
ghci> random (mkStdGen 100)
<interactive>:1:0:
Ambiguous type variable `a' in the constraint:
`Random a' arising from a use of `random' at <interactive>:1:0-20
Probable fix: add a type signature that fixes these type variable(s)
这是什么?啊,对,
random
函数可以返回任何类型的值,这是Random
类型类的一部分,所以我们需要通知Haskell我们想要的类型。另外我们不要忘记它会返回一个随机值和一对随机生成器。
的问题是,我没有得到这个错误,其实,我可以做到以下几点:
*Main> :m + System.Random
*Main System.Random> random (mkStdGen 100)
(-3633736515773289454,693699796 2103410263)
所以我的问题是,为什么我不能评价没有得到外,这个体现在哪里?
只是对未来的一个简短提示:如果你真的想在Haskell中使用随机数,mwc-random包会更快并且会产生更高质量的随机数。 – tibbe 2014-09-30 11:42:53