随机数生成与并行化c++/Qt

Random number generation and parallelization c++/Qt

本文关键字:c++ Qt 并行化 随机数      更新时间:2023-10-16

我想知道这是否会使随机数的并行生成变得更糟。我在这里使用Qt和QtConcurrent。使用并行化而不是一行生成N个数字值得吗?哪一个可能是生成数的临界数?我的代码在这里,非并行化:

double** sampled = Matrix::allocMatrice(n,m_ndim,true);
Random* generator_ = new Random();
generator_->newSeed();
double* temp_;
for(int k=0;k<n;k++)
{
    for(int j=0;j<m_ndim;j++)
    {
        sampled[k][j] = generator_->run(lower[j],upper[j]); 
    }
}

whre Random是一个按照Marsaglia生成方法自制的随机生成器。

谢谢和问候。

如果你想要真正的并行随机数生成,你几乎肯定运气不好。据我所知,没有真正的多线程算法可以有效而果断地使用不同的线程生成几个随机数。

我以前所做的和建议你现在所做的,是设置N个不同的生成器(显然有N个不同种子),并手动将生成分布在N个线程。结果将是可复制的,并且是高度多线程的。