经过一段时间令人沮丧的研究后,我正在写这篇文章,我希望这里有人可以启发我这个话题。
我想在 haskell 函数中生成一个简单的随机数,但是,如果没有各种重要的元素,例如 Monad、“do”中的分配、创建生成器等,这似乎是不可能的。
理想情况下,我正在寻找相当于 C 的“rand()”。但是经过大量搜索后,我非常确信没有这样的东西,因为语言是如何设计的。(如果有,请有人赐教)。由于这似乎不可行,我想找到一种方法来为我的特定问题获取随机数,以及如何获取随机数的一般解释。
prefixGenerator :: (Ord a, Arbitrary a) => Gen ([a],[a])
prefixGenerator = frequency [
(1, return ([],[])),
(2, do {
xs1 <- orderedListEj13 ;
xs2 <- orderedListEj13 ;
return (xs1,xs2)
}),
(2, do {
xs2 <- orderedListEj13 ;
return ((take RANDOMNUMBERHERE xs2),xs2)
})
]
我正在尝试掌握 QuickCheck,但我无法使用随机数使其变得困难。我已经尝试过这样的事情(通过放置一个drawInt 0(长度xs2)而不是RANDOMNUMBERHERE)但我坚持认为需要一个Int并且该方法给我留下了一个IO Int,这似乎不可能转换为int依此。