diff --git "a/\346\225\260\345\200\244/\344\271\261\346\225\260\343\202\222\345\276\227\343\202\213.md" "b/\346\225\260\345\200\244/\344\271\261\346\225\260\343\202\222\345\276\227\343\202\213.md" index 9545495..ec469bc 100644 --- "a/\346\225\260\345\200\244/\344\271\261\346\225\260\343\202\222\345\276\227\343\202\213.md" +++ "b/\346\225\260\345\200\244/\344\271\261\346\225\260\343\202\222\345\276\227\343\202\213.md" @@ -85,6 +85,39 @@ getStdGen :: IO StdGen ##### 種から乱数を得る +乱数の種から乱数を得るには関数randomを使います。 + +```haskell +> g = mkStdGen 8 +> random g +(-398575370259562870,1380072070 2103410263) +``` + +関数randomは乱数値と新しい種をかえします。 +乱数値は、デフォルトではInteger型の値となります。 +型を指定することもできます。 + +```haskell +> random g :: (Double, StdGen) +(0.7492446889336446,1380072070 2103410263) +> random g :: (Bool, StdGen) +(True,360126 40692) +> random g :: (Char, StdGen) +('\319433',360126 40692) +``` + +新しい種から、つぎの乱数値を作ることができます。 + +```haskell +> random g :: (Char, StdGen) +('\319433',360126 40692) +> random $ snd it :: (Char, StdGen) +('\282363',1525180386 1655838864) +``` + +このようにして、ひとつの種から、 +つぎつぎに新しい乱数値を生成していくことができます。 + ##### 無限乱数列を取得する ##### IO内で簡単に乱数を取得する