Haskell中是否有任何内置函数可以在
之类的范围内提供随机数x = random(a,b),使得x给出一个整数位于a和b之间。
a< = x< = b
当我多次执行时,Haskell中的一些函数会给出相同的数字。
提前谢谢你。
答案 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
返回系统随机数生成器。