あどけない話

インターネットに関する技術的な話など

State モナドと疑似乱数

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]

まだまだ頭が命令型だと思う今日この頃。。。