【发布时间】:2013-11-22 09:20:15
【问题描述】:
我读过 Mersenne Twister 发生器的周期为 2¹⁹⁹³⁷ - 1,但我很困惑为什么会这样。我看到了 Mersenne Twister 算法的this implementation,在第一条评论中它清楚地说它产生的值在 0 到 2³² - 1 的范围内。因此,在它产生 2³² - 1 个不同的随机数之后,它必然会回到起点(种子),所以周期最大可以是 2³² - 1。
另外(如果我错了,请告诉我),至少在单个内存块中,计算机无法保存数字 (2¹⁹⁹³⁷ - 1) ~ 4.3×10⁶⁰⁰¹。我在这里错过了什么?
【问题讨论】:
-
MT19937 有 624 字节的状态,因此 u.it 可以放入单个块中。而你所说的这种种子包装只适用于线性同余生成器,而 MT 则不然。