在“Dynamic Creation of Pseudorandom Number Generators” Matsumoto和Nishimura警告不要为了并行模拟而不小心初始化MT PRNG,并假设来自不同发生器的数字流彼此独立:
并行机器中PRNG的通常方案是对每个过程使用同一个PRNG,具有不同的初始种子。然而,该过程可能产生不良碰撞,特别是如果发生器基于线性递归,因为在这种情况下,两个伪随机序列的总和满足相同的线性递归,并且可能出现在第三序列中。如果并行流的数量与状态空间的大小相比变大,则危险变得不可忽略。
流的数量有多大才能成为一个严重的问题?在标准MT MT19937的情况下,状态空间相当大......我可以肯定地看到在20,000个序列中存在2 19937 -1的线性关系,但生日如何 - 400个序列之间的悖论式关系?
看起来这实际上是一个严重的问题,因为并行PRNG实现确实包含DCMT,但是有一些失败的例子会很好,并且当这成为问题时会有一些意义。
答案 0 :(得分:0)
讨论了这个问题here。
在MT空间中“远离”两条溪流,它们的总和也令人满意 复发。所以可能担心第三个流不是只是 关于与前两个流的相关性或重叠,但是, 取决于应用程序,也与相关/重叠的总和有关 前两个流。移到N个流,有O(N ** 2) 直接总和担心,然后总和,并... ...
仍然不会导致我的统计预期寿命出现问题,但是我 只有4个核心; - )
所以它比生日悖论更糟糕。问题实际上很可能是log(状态空间大小)/ log(2)序列,对于标准MT来说大约是14个序列。