我有一个循环,我会给一些点添加噪音;这些点稍后将作为一些统计测试的基础。所涉及的数据集非常大,因此我想使用openMP并行化以加快速度。问题出现在当我想要拥有多个PRNG时。我有自己的PRNG类,基于NR的模数方法(我认为是rand4),但我不确定如何正确地种子化PRNG以确保适当的熵。
通常情况下,我会做这样的事情:
通常情况下,我会做这样的事情:
prng.initTimer();
但是如果我有一个PRNG数组,每个工作线程一个,那么我不能简单地在每个实例上调用initTimer -- 计时器可能不会改变,并且计时器的接近可能引入相关性。
我需要保护自然相关性,而不是恶意攻击者(这是实验数据),因此我需要一种安全的方法来种子化RNG数组。
我考虑过简单地使用
prng[0].initTimer()
for(int i=1; i<numRNGs; i++)
prng[i].init(prng[0].getRandNum());
我要调用我的循环,但不确定这是否会在取模方法中引入相关性。