【发布时间】:2014-10-30 20:57:11
【问题描述】:
这个
std::mt19937 gen(123);
std::normal_distribution<> distr(0., .2);
printf("%f", distr(gen));
在我的 OSX 10.9 机器(使用 clang 3.5 构建)上打印 0.339167,但在 linux 机器(gcc 4.8)上打印 -0.113922。我希望到处都能看到相同的结果。
从 mt19937 检查底层流时,我看到两个平台上的数字序列一致。因此,平台不一致似乎在 std::normal_distribution 中。
这是预期的行为吗?有没有一种方法可以设置它,以保证我在任何地方都能得到相同的结果?
【问题讨论】:
-
那是 libstdc++ (gcc) 吗? libc++ (clang)?
-
@Deduplicator 是的,没错