尽管随机引擎需要在每个编译器上生成相同的数字序列,但至少一些随机分布并不要求如此,只需要满足统计和概率阈值即可。例如:
#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。
在任何兼容环境下,哪些标准提供的分布函数保证产生一致的结果?