小编Cpp*_*123的帖子

熵和并行随机数发生器播种

我有一个循环,我在某些点添加噪音; 这些后来被用作一些统计测试的基础.

涉及的数据集非常大,所以我想使用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)

然后调用我的循环,但不确定这是否会在模数方法中引入相关性.

c++ math parallel-processing statistics

6
推荐指数
1
解决办法
472
查看次数

标签 统计

c++ ×1

math ×1

parallel-processing ×1

statistics ×1