在“伪随机数生成器的动态创建”</a>中,Matsumoto 和 Nishimura 告诫不要出于并行模拟的目的粗心地初始化 MT PRNG,因为并行模拟假设来自不同生成器的数字流彼此独立:
并行机器中 PRNG 的通常方案是为每个进程使用一个相同的 PRNG,并使用不同的初始种子。但是,此过程可能会产生不良碰撞,特别是如果生成器基于线性递归,因为在这种情况下,两个伪随机序列的总和满足相同的线性递归,并且可能出现在第三个序列中。如果并行流的数量与状态空间的大小相比变得很大,则危险变得不可忽视。
要成为一个严重的问题,流的数量必须达到多少?在标准 MT MT19937 的情况下,状态空间相当大......我肯定可以看到 20,000 个序列之间存在模 2 19937 -1 的线性关系,但是 400 个序列之间的生日悖论式关系怎么样?
看起来这实际上是一个严重的问题,因为并行 PRNG 实现确实包括DCMT,但是如果有一些失败的例子,以及当这成为问题时的一些意义,那就太好了。