下面的代码中是否有平台或编译器相关的内容?在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();
答案 0 :(得分:3)
引擎的规范指定了确切的算法,因此它们的输出在所有平台上都应该相同。
分布的规范指定结果,但不指定算法。即使使用相同的引擎,它们的输出也会因平台而异。
答案 1 :(得分:2)
对均匀分布没有限制,只不过它们可以产生均匀分布。
允许标准库作者使用他们喜欢的任何算法和实现,这样可能会在不同平台上产生不同的结果。
您的选择是制作自己的发行版或寻找具有适当许可证的开源发行版。