首页 > 解决方案 > C++ 伪随机数生成平台依赖

问题描述

下面的代码中是否有任何依赖于平台或编译器的内容?在 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();

标签: c++random

解决方案


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

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


推荐阅读