【发布时间】:2014-12-19 17:50:06
【问题描述】:
虽然随机引擎需要在每个编译器上提供相同的数字序列。至少一些随机分布不是,只要求它们满足统计和概率阈值。举个例子:
#include <random>
#include <iostream>
int main() {
std::mt19937 foo;
std::uniform_int_distribution<int> bar(0, 1000);
for (int i=0; i<99; ++i) {
bar(foo);
}
std::cout << bar(foo) << std::endl;
return 0;
}
当针对(我的版本)libstdc++ 编译时将打印 808,当针对 libc++ 编译时将打印 89。
无论为您提供何种合规环境,哪些标准提供的分发功能(如果有)可以保证产生一致的结果?
【问题讨论】:
-
89 比 808 随机得多,相信我。 ;-)
-
当然不像 4 那样随机。 xkcd.com/221
-
+1 用于优雅地处理我的笑话。 :-)
标签: c++ c++11 random language-lawyer