1
我正在学习并行计算,对于练习,我需要并行使用随机数生成器。 但我似乎无法在子程序中使用RNG,因此它们会返回不同的数字。下面的代码是我做的最简单的测试,同时弄清楚如何做到这一点。 对于每次迭代它返回相同的数字,但我不知道为什么。你能解释我不明白的吗?C++ 11子函数中的随机数发生器
#include <iostream>
#include <random>
void morerandom(double& num, double seednum)
{
std::mt19937 mt;
mt.seed(seednum);
std::uniform_real_distribution<double> ureal_d(0.,1.);
num = ureal_d(mt);
}
int main()
{
std::vector<double> nums = {0.1, 0.4, 0.3, 0.3, 0.1};
std::vector<double> results(5,0.);
for (unsigned k=0; k<5; k++)
{
morerandom(results[k], nums[k]);
std::cout << results[k] << std::endl;
}
return 0;
}
'seed'应该由'int'或其他_integral type_,由于从'double'转换为'int',您可能总是使用'0'作为种子 –
谢谢K-Ballo –