C 伪随机数生成平台依赖关系

C++ pseudo random number generation platform dependency

本文关键字:平台 依赖 关系 随机数      更新时间:2023-10-16

在下面的代码下方有什么是平台或编译器依赖性的东西?当用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();

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

distributions 的规格指定结果,但没有指定算法。即使使用相同的引擎,它们的输出也可以因平台而异。

除了产生统一分布外,对统一分布没有任何限制。

标准图书馆作者可以使用他们喜欢的任何算法和实现,因此可能会在不同的平台上产生不同的结果。

您的选项是生产自己的分销或找到具有适当许可证的开源产品。