寻找并行PRNG需要Matsumoto的DCMT算法的演示

时间:2016-03-01 04:09:12

标签: random parallel-processing mersenne-twister

“Dynamic Creation of Pseudorandom Number Generators” Matsumoto和Nishimura警告不要为了并行模拟而不小心初始化MT PRNG,并假设来自不同发生器的数字流彼此独立:

  

并行机器中PRNG的通常方案是对每个过程使用同一个PRNG,具有不同的初始种子。然而,该过程可能产生不良碰撞,特别是如果发生器基于线性递归,因为在这种情况下,两个伪随机序列的总和满足相同的线性递归,并且可能出现在第三序列中。如果并行流的数量与状态空间的大小相比变大,则危险变得不可忽略。

流的数量有多大才能成为一个严重的问题?在标准MT MT19937的情况下,状态空间相当大......我可以肯定地看到在20,000个序列中存在2 19937 -1的线性关系,但生日如何 - 400个序列之间的悖论式关系?

看起来这实际上是一个严重的问题,因为并行PRNG实现确实包含DCMT,但是有一些失败的例子会很好,并且当这成为问题时会有一些意义。

1 个答案:

答案 0 :(得分:0)

讨论了这个问题here

  

在MT空间中“远离”两条溪流,它们的总和也令人满意   复发。所以可能担心第三个流不是只是   关于与前两个流的相关性或重叠,但是,   取决于应用程序,也与相关/重叠的总和有关   前两个流。移到N个流,有O(N ** 2)   直接总和担心,然后总和,并... ...

     

仍然不会导致我的统计预期寿命出现问题,但是我   只有4个核心; - )

所以它比生日悖论更糟糕。问题实际上很可能是log(状态空间大小)/ log(2)序列,对于标准MT来说大约是14个序列。