如何在Haskell中“存储”PRNG的最后结果?

时间:2014-03-28 05:25:23

标签: haskell random mutable

对于赋值,我必须在Haskell中编写伪随机数生成器。我不确定Haskell有什么可能记得"记住"函数返回的最后一个值,因为伪随机数生成器的定义需要这个值(序列中的下一个数字基于返回的最后一个数字)。

在命令式语言中,我可以保留一个全局变量或其他东西:

int last_rand;

int myRandom()
{
   last_rand =  (some operation on last_rand);
   return last_rand;
}

但是在Haskell,或者至少从我对Haskell的了解中,没有办法存储和更新函数返回的值的可变记录......我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

我建议您阅读Chapter 9 Input and Output - Randomness本书的Chapter 13 For a Few Monads More - Making monadsLearn You a Haskell(查找Tasteful stageful computations部分)。

在那里你会找到你的作业的解决方案(或解决方案的关键)。

P上。 S.我给出了书的链接,因为复制粘贴它的内容是没有意义的。直接链接:)