C ++伪随机数生成平台依赖性

时间:2018-12-17 16:56:42

标签: c++ random

下面的代码中是否有平台或编译器相关的内容?在cygwin中用g ++编译时,它提供的值与在VC ++中编译时提供的值不同。如果可能的话,我想删除所有此类依赖项。

minstd_rand0 engine;
engine.seed(3113722101);
uniform_int_distribution<int> day_dist(1, 365);
uniform_real_distribution<double> quant_dist(0.0, 1.0);
ofstream fout(argv[1]);
for (int i = 0; i < years; ++i) {
    fout << (i + 1) << "\t";
    fout << day_dist(engine) << "\t";
    fout << quant_dist(engine) << "\t";
    fout << quant_dist(engine) << "\t";
    fout << quant_dist(engine) << "\n";
}
fout.close();

2 个答案:

答案 0 :(得分:3)

引擎的规范指定了确切的算法,因此它们的输出在所有平台上都应该相同。

分布的规范指定结果,但不指定算法。即使使用相同的引擎,它们的输出也会因平台而异。

答案 1 :(得分:2)

对均匀分布没有限制,只不过它们可以产生均匀分布。

允许标准库作者使用他们喜欢的任何算法和实现,这样可能会在不同平台上产生不同的结果。

您的选择是制作自己的发行版或寻找具有适当许可证的开源发行版。