>>309
Haskellでは関数は毎回同じ値がかえってこないといけないので、
そのようなものはありません。

では乱数はどうするかというと、
ramdom :: (RandomGen g) => g -> (a, g)
のように、generatorを渡して乱数を生成し、次のgeneratorを
返すことで実現します。

実際にはこのままでは使いにくいので、
randoms :: (RandomGen g) => g -> [a]
と無限リストにするか(これがお薦めです)、
C言語と同じ様に副作用によってgeneratorの状態を保存するために
モナドを用います。

# System.Randomで乱数関係の関数が定義されています。