我正在使用std::random_shuffle
函数和一个自定义随机数生成器,对于同一种子,它会在所有编译器中返回相同的随机数序列。
但是,我担心std::random_shuffle
可能不会在不同的编译器之间使用相同的算法,因此,对于相同的种子,结果将不相同。
我可以依赖std::random_shuffle
在不同的编译器中使用相同的随机数序列生成相同的输出吗?如果没有,还有其他选择吗?
不使用C ++ 11或Boost。
答案 0 :(得分:2)
从阅读" 25.3.12随机随机播放"在C ++ 11标准(我在这里),我会得出结论,严格地说,不能保证。该算法的唯一要求是:#34;这些元素的每个可能的排列具有相同的出现概率"。例如,它不必从前到后交换元素,并且迭代器是随机访问迭代器,因此任何其他顺序都是可能的。 (也就是说,如果实施不是先行 - >最后,我会感到惊讶,但不能保证。)