State モナドの利用例として疑似乱数が挙げられることがあります。たとえば、以下のように。
でも、State モナドの例として、疑似乱数は適切ではないと分りました。
疑似乱数は、単なる数列ですから、リストとして生成し、欲しい分だけ先頭から使えばいいんですね。Haskell は遅延評価なんですから。
rand x = (x * 7 + 5) `mod` 17 randList = iterate rand 8 take 20 randList → [8,10,7,3,9,0,5,6,13,11,14,1,12,4,16,15,8,10,7,3]
まだまだ頭が命令型だと思う今日この頃。。。