Haskell中的随机数生成器是什么
发布时间:2023-12-10 12:01:16
在Haskell中,可以使用Random库来生成随机数。Random库提供了一个随机数生成器类型RandomGen以及一些相关的函数来生成随机数。
RandomGen是一个抽象类型class,它定义了随机数生成器的接口,它的实例可以通过newStdGen函数创建,例如:
import System.Random
main = do
gen <- newStdGen
let randomInt = take 10 (randomRs (1, 100) gen) :: [Int]
print randomInt
在这个例子中,我们使用newStdGen函数创建了一个随机数生成器gen。为了生成10个随机整数,我们使用了randomRs函数,它接受一个范围(1到100)和一个随机数生成器作为参数,并返回一个无限的随机数列表。最后,我们通过取列表的前10个元素(take 10)来获取10个随机整数,并打印出来。
另一个常用的随机数生成函数是random函数,它可以生成一个指定范围内的随机数。以下是一个示例:
import System.Random
main = do
gen <- newStdGen
let (randomInt, _) = randomR (1, 100) gen :: (Int, StdGen)
print randomInt
在这个例子中,我们使用了randomR函数,它接受一个范围和一个随机数生成器作为参数,并返回一个范围内的随机数和一个新的随机数生成器。我们通过模式匹配获取到随机数,并打印出来。需要注意的是,我们使用了类型注释(::)来指定随机数的类型为Int,以及新的随机数生成器类型为StdGen。
除了生成整数之外,Random库还可以用来生成其他类型的随机数,例如浮点数、字符和布尔值等。以下是一个示例:
import System.Random
main = do
gen <- newStdGen
let randomFloat = take 10 (randomRs (1.0, 100.0) gen) :: [Float]
print randomFloat
在这个例子中,我们使用了randomRs函数和类型注释::来生成一个浮点数列表。
总结起来,Haskell中的随机数生成器使用Random库,通过RandomGen类型的实例以及相关函数来生成随机数。我们可以使用randomRs函数来生成指定范围内的随机数列表,或者使用random函数来生成单个随机数。
