c++ - 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();
解决方案
引擎的规范指定了确切的算法,因此它们的输出在所有平台上应该是相同的。
分布规范指定了结果,但没有指定算法。即使使用相同的引擎,它们的输出也会因平台而异。
推荐阅读
- php - php utf8 / unicode 编码
- javascript - 如何将图像名称从 Firebase 存储复制到 Firebase 数据库?Javascript 和 Java
- android - 将数据库信息获取到片段上的 ListView
- r - 在 R 中的 For 循环中嵌套 if 循环以比较条件
- mongodb - 如何在mongodb中创建索引以同时支持多个查询?
- javascript - 树结构的多个javascript切换
- c# - C# 科学计算器
- javascript - 在react js中单击映射数组时获取索引
- android - 无法动态添加视图
- idris - Control.ST纯型