【发布时间】:2010-03-10 23:12:54
【问题描述】:
假设我们以负整数 [种子] 开始调用函数 ran2,它将产生一系列随机数。如果使用相同的种子,则可以准确地重新生成序列。
现在我的问题是,有没有一种方法可以让我们直接进入序列中的某个点,然后从该点继续?例如,如果某个种子的随机数是 0.35、0.32、0.44、0.32、0.66、0.32、0.45。
如果我们知道产生这个序列的种子,有没有办法让函数返回 0.66,然后从那个点开始继续?
我想使用它的方式是在模拟中。因此,如果我的模拟在某个点结束并且我需要重新启动它,我应该继续使用相同的随机数序列。 谢谢。
【问题讨论】:
-
为什么不维护一堆模拟状态(特定的随机数只是另一条信息),以便您更容易回溯/恢复/暂停/重播?
-
@Igancio。摘自《数值食谱:科学计算的艺术》一书。 nr.com Fortran 版本。但我想程序使用哪种语言并不重要。
-
@dirkgently:这将涉及节省太多输出。我说的是对函数的数千万次调用。因此,如果我们知道种子,如果能以直接的方式到达系列中的某个点,那就太好了。
-
超过一定限制时序列化输出。仅在内存中保留一定数量的状态(上下文的局部性),这足以用于回溯并按需加载较早的状态。否则,
标签: math random generator simulation