我有点不确定这个问题的正确论坛。它介于理论补偿之间。科学/数学和编程。
我使用 Mersenne-Twister 生成伪随机数。现在,从给定的种子开始,我想跳到序列中的第 n 个数字。
我看过这个:http ://www-personal.umich.edu/~wagnerr/MersenneTwister.html ,一种方案可能如下:
假设,我只需要来自特定种子s的完整随机序列中的前N个数字。
我将序列拆分为p个子序列,遍历所有 N 个数字,并将随机数生成器的状态向量保存在每个子序列的开头。
现在要达到第n个数字,我会看到n落在第k个子序列中,我将加载该子序列的状态向量并生成m个连续随机数,其中第 k 个子序列中的第 m 个数字是与完整序列中的第 n 个数字相同( n = m + (k-1) * N/p )。
但是状态向量是 624 x 4 字节长!我想知道实际上是否可以跳转到 mersenne-twister 生成的序列中的任意元素。