PRNG中有多少州(Mersenne Twister说)以及下一个州的分布情况如何?

时间:2014-06-05 22:42:02

标签: random mersenne-twister

对于像Mersenne Twister这样的PRNG,其周期为2 ^ 19937-1,那么PRNG的确有很多州吗?即状态在那时开始重复,因为PRNG没有更多的状态?

作为后续行动,鉴于您在PRNG的某些现状中存在,下一个州的分布情况如何?我正在进行长时间的模拟,并且有兴趣找出使用随机种子的一次模拟可能会遇到使用不同随机种子的另一个模拟中存在的状态。

1 个答案:

答案 0 :(得分:4)

伪随机数生成器(PRNG)通过将确定性函数应用于当前状态来工作,以便确定下一个状态,然后将该状态投影到返回位的数量上。询问"在某些当前状态退出时,下一个州的分布是什么?#34;基本上没有意义。由于转换是确定性的,因此从任何给定的状态,只有一个状态将成为下一个状态。最终你将不可避免地回到一些先前观察到的状态,从那时起状态和它们相应的输出预测将以相同的顺序重复,并且我们说你的PRNG已经循环。循环长度取决于从起始点(种子状态)可以到达多少个唯一状态,并且由状态空间的大小限制但不一定等于。例如,有些函数只有在偶数时才会产生偶数,或者如果是奇数,则只能产生奇数。在重复之前,这两种情况都不会产生所有可能的整数。

Mersenne Twister通过具有19937位的状态空间实现2 19937 -1的循环长度。 (如果我没记错的话,-1是因为所有0的状态都无法从任何其他非零状态到达。)至于两次运行中重叠状态的可能性,请忘掉它。为了让您了解2 19937 -1的大小,请考虑以下因素:物理学家估计大约有10个 80 = 2 266 已知宇宙中的亚原子粒子。如果您使用完整状态初始化(例如从/dev/random读取2.5KB到字节缓冲区)独立播种您的运行,即使您使用10 10 随机数你要问的是你在两个 19937-300 宇宙中两次选择相同的亚原子粒子的可能性相当。它只是不会发生。