sub*_*com 5 random algorithm mersenne-twister
我对这个问题的正确论坛有点不确定.它介于理论之间.sci./math和编程.
我使用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生成的序列中的任意元素.
对的,这是可能的!它被称为Jump Ahead.
你可以在MT的作者的主页上找到Mersenne Twister的所有细节.提供代码以及解释算法的科学出版物:
http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/JUMP/index.html