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