在Haskell中生成随机整数

时间:2014-03-18 08:55:05

标签: haskell

Haskell中是否有任何内置函数可以在

之类的范围内提供随机数

x = random(a,b),使得x给出一个整数位于a和b之间。

a< = x< = b

当我多次执行时,Haskell中的一些函数会给出相同的数字。

提前谢谢你。

1 个答案:

答案 0 :(得分:3)

randomR中有一个名为System.Random的人。如果我们看一下它的类型签名:

randomR :: (RandomGen g, Random a) => (a, a) -> g -> (a, g)

并将其专门化为整数我们得到

randomR :: (RandomGen g) => (Integer, Integer) -> g -> (Integer, g)

所以这是一个给出低和高的函数,随机数生成器返回一个随机整数和一个新的随机生成器。这是有道理的,因为Haskell是一种纯语言,使用相同的随机生成器调用randomR将始终返回相同的结果。

那么我们如何才能在程序中使用它?我们需要一个随机数生成器来开始。最简单的方法是使用mkStdGen :: Int -> StdGen从种子创建随机数生成器,或使用newStdGen :: IO StdGen返回系统随机数生成器。