【发布时间】:2015-02-14 00:55:32
【问题描述】:
我正在使用 std::mt19937_64 生成一个随机数序列。我注意到,当使用 GCC 和 Clang 在同一平台上使用相同的种子运行时,我获得了不同的序列。我通过 Valgrind 运行了程序,没有发现未初始化的内存。
使用 std::mt19937_64 是否可以保证跨编译器或跨平台的再现性?
编辑:使用 std::normal_distribution 运行
【问题讨论】:
-
如果您需要交叉编译器保证兼容性,您可以使用Boost.Random。
-
也许我在这里有点天真,但可以说如果他们使用相同的算法和相同的参数,他们不应该重现相同的序列吗?
-
由于您使用的是正态分布,请参阅我的answer here 基本上答案是否定的,但底层引擎应该是一致的,看起来像重复。
标签: c++ random c++-standard-library