2

Gen (Maybe Int)を に変換したいMaybe Int。1 から 9 までのランダムな Just Int を生成する関数があります。セル関数を使用したいのですが、その型シグネチャを変更できません。助言がありますか?

 cell :: Gen (Maybe Int)
 cell = frequency
         [(9, return Nothing),
         (1, do n <- choose (1,9)  
                return (Just n))]
4

2 に答える 2

3

ここにそれを行ういくつかの方法があります

> sample' cell
[Nothing,Just 5,Nothing,Nothing,Just 7,Nothing,Nothing,Nothing,Nothing,Just 6,Nothing]

randomcellのリストを生成します。要素を 1 つだけ取得する場合は、head を呼び出すことができます。

unGenとして使用できます

main = do
    s <- newStdGen 
    print $ unGen cell s 100 -- 100 is arbitrary 
于 2012-10-28T19:18:34.793 に答える
2

unGen :: Gen a -> StdGen -> Int -> aそのための関数を使用できます。これには、標準の乱数ジェネレーター(System.Random取得する方法を探す)とサイズパラメーター(この場合は無視されると思います)が必要です。

于 2012-10-28T17:49:59.247 に答える