Haskellでも平均値

rubyco(るびこ)の日記 - 平均値を見て、僕もHaskellで書いてみました。そうかー、seedを与えると乱数はIOじゃなくなるのかー。考えてみればすごく自然なのですが、なるほどと思いました。

module Main (main) where

import Data.List (genericLength)
import System.Random (mkStdGen, randomRs)

main :: IO ()
main = do
  let g   = mkStdGen 314159 -- この辺。IOじゃない。
      ns  = take 10 $ randomRs (0, 99) g
      avr = (fromInteger $ sum ns) / genericLength ns
  print ns
  putStrLn $ "average = " ++ show avr

実行例:

$ ./avr.exe
[94,66,65,98,98,90,21,59,19,19]
average = 62.9