乱数の覚書です。
import Control.Monad
import System.Random
main :: IO ()
main = do
forM_ [1..100] $ \_ -> onPoint
putStrLn ""
where
onPoint :: IO ()
onPoint = do
x <- (getStdRandom $ randomR (0, 100) :: IO Int)
--y <- (getStdRandom $ randomR (0, 100) :: IO Int)
--print (x, y)
--print (x)
putStr (show x)
putStr " "
*Main> main
33 20 53 98 78 54 44 75 60 25 72 65 6 69 20 88 73 14 52 20 60 50 47 32 50 69 91 7 22 43 41 72 77 81 80 32 12 4 24 90 26 21 23 85 16 56 4 83 69 27 6 10 2 80 73 94 61 66 38 8 34 44 71 48 93 82 76 50 54 9 89 68 51 12 89 22 19 23 97 38 61 69 15 100 100 37 59 39 13 62 7 20 84 53 6 96 65 96 24 75
*Main>
実行結果は、毎回違います。
Haskellは、型推論ができる言語ですが、randomR
で数値を指定する場合は「型注釈」と呼ばれる、型の指定が必要になります。
:: IO Int
型注釈は上記のように式の末尾に簡易的に記述することもできますが、次のように識別子の上に記述するのが基本形です。
import Control.Monad
import System.Random
main :: IO ()
main = do
forM_ [1..100] $ \_ -> onPoint
putStrLn ""
where
onPoint = do
x <- random
putStr (show x)
putStr " "
random :: IO Int
random = getStdRandom $ randomR (0, 100)
*Main> main
18 4 6 17 53 32 41 78 18 42 37 3 4 100 15 80 52 68 11 91 33 31 1 81 43 48 44 93 24 8 35 30 64 73 47 61 28 91 63 96 45 79 61 21 50 29 22 32 17 64 51 74 88 26 40 81 78 51 22 63 38 74 91 18 87 72 19 81 95 36 32 64 57 57 97 32 82 84 91 65 84 34 33 1 59 88 19 52 26 51 31 57 74 56 12 23 67 27 93 37
*Main>
実行結果は、毎回違います。