随机数生成器函数ran2 Numerical Recipes

时间:2010-03-10 23:12:54

标签: math simulation random

鉴于我们以负整数[种子]开始调用函数ran2,它将产生一系列随机数。如果使用相同的种子,则可以精确地再生序列。

现在我的问题是,有没有一种方法可以直接进入序列中的某个点,然后从那一点开始继续?例如,如果某个种子的随机数是0.35,0.32,0.44,0.32,0.66,0.32,0.45。

如果我们知道引起这个序列的种子,是否有办法让函数返回0.66然后从那一点开始继续?

我想要使用它的方式是在模拟中。因此,如果我的模拟在某一点结束并且我需要重新启动它,我应该继续使用相同的随机数序列。 感谢。

1 个答案:

答案 0 :(得分:1)

我同意@dirkgently上面的评论。虽然我不熟悉ran2,但基于this sample code,看起来有一些有状态的部分(idumidum2iyiv)可以封装和存储。当您“暂停”模拟时,您可以保存此状态,并在下次启动时将其写回ran2引擎。恢复状态信息应该将机器放回到停止的位置,随机序列可以恢复。这可能需要稍微修改一下ran2代码本身,但不应该是一个难以改变的代码。