haskell为什么System.Random在monad中

时间:2017-11-10 00:53:38

标签: haskell random monads

我想使用随机数生成器。经过研究后我发现,System.Random是唯一的方法(除了自己编程RNG)。有人可以告诉我这个班级的RNG有什么区别吗?我有以下简单的结构:

data Tree = Leaf
            | Function Tree Tree
            | Lambda Tree
            deriving (Show)

当我使用mkStdGen构建随机树时,该树将具有类型

baum :: Int -> Tree

我不能让控制台向我显示树(如果我有一个随机生成的树叫做a,如果我在控制台中键入a,我会收到错误)。 当我使用getStdGen时,该树将具有类型

baum :: IO Tree

我可以让控制台向我展示我的树(如果我有一个随机生成的树叫做a,如果我在控制台中键入a,它会显示树)。

那两个RNG之间有什么区别,并且都让我在Monad中给了一棵树? (为什么mk版本会回馈:Int - > Tree?)

由于数据保护原因,我无法在此处发布我的代码。 我的函数的类型签名是build :: RandomGen g => Int - > Int - > Int - > Int - > g - >树。我想做的就是用一些参数生成我的树。我需要这个用于大学项目。我不知道RNG是最好的选择,如果我不可能只得到一棵树。

0 个答案:

没有答案