私はイライラする調査をしばらく行った後にこれを書いています。ここの誰かがこのトピックについて私を啓発してくれることを願っています.
Haskell関数で単純な乱数を生成したいのですが、残念ながら、モナド、「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 を理解しようとしていますが、乱数を使用できないために難しくなっています。私はこのようなことを試しました( RANDOMNUMBERHEREの代わりにdrawInt 0(長さxs2)を配置することにより)が、テイクにはIntが必要であり、そのメソッドにはIO Intが残っているという事実に行き詰まります。thisによると Int 。