不同的伪随机数流

时间:2015-10-07 21:53:10

标签: random

我在运行模拟时有一个作业问题,我生成100个随机数并对每个结果进行计算。下一个问题要求我重复上一个问题,但使用不同的伪随机数流。旁注告诉我要在一次调用程序中执行两次计算,因为任意改变种子/状态会导致重叠的流。

有人可以向我解释这意味着什么吗?为什么我必须通过1循环来完成它? 为什么我不能每次使用不同的种子两次调用相同的代码?

1 个答案:

答案 0 :(得分:1)

伪随机数生成器(PRNG)通过在称为生成器的状态的某些内部信息上迭代一组确定性计算来工作,然后将一个基于状态的值交还给您。有一定数量的状态信息可以确定下一个状态,从而确定下一个结果。由于它是有限的,最终生成器将重新访问它之前使用的状态,从那时起,所有值将与您已经看到的序列完全重复。据说PRNG已经循环使用。 “播种”随机数生成器设置状态的起始点,因此它有效地对应于选择循环的入口点。

如果一个人通过任意改变种子进行干预,他们就有可能过早地将状态恢复到输出序列的某些部分重复的位置。这被称为重叠流。解决方案是为您的PRNG播种一次,然后不要弄乱它,以便它可以实现完整的循环。

在您的情况下,这意味着您的第一组100个数字的值和顺序将与您的第二组100的数值和顺序不同。