我读过Mersenne Twister发电机的周期为2 1-3-1,但是我对为什么可以这样做感到困惑。我看到了Mersenne Twister算法的this implementation,在第一个注释中它清楚地表明它产生的值在0到2³²-1的范围内。因此,在产生2³²-1个不同的随机数之后,它一定会回到起点点(种子),因此周期最大为2³²-1。
另外(请告诉我是否有误),计算机至少在一个内存块中无法容纳数字(2×13-1)〜4.3×10×1。我在这里想念什么?
最佳答案
您的困惑来自于认为输出编号和PRNG的内部状态必须是同一件事。
一些非常古老的PRNG用于执行此操作,例如线性Congruental生成器。在这些发电机中,电流输出被反馈到发电机中以进行下一步。
但是,大多数PRNGS(包括Mersenne Twister)都在更大的状态下工作,它会更新并用于生成32位数字(对于此答案,执行此顺序实际上并不重要)。
实际上,Mersenne Twister实际上确实存储了624次32位值,即19968位,足以容纳您想知道的很长的时间。分别处理这些值(作为无符号的32位整数),在单步计算中不将其视为一个大数。您从输出中获得的32位随机数与此状态有关,但不能自行确定下一个数字。
关于random - 关于梅森·Twister发电机的生产时期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20141142/