gpt4 book ai didi

c++ - std::random_shuffle 是否可以跨不同的编译器重现?

转载 作者:太空狗 更新时间:2023-10-29 21:42:55 32 4
gpt4 key购买 nike

我正在使用带有自定义随机数生成器的 std::random_shuffle 函数,对于相同的种子,在所有编译器中返回相同的随机数序列。

但是,我担心 std::random_shuffle 可能不会在不同的编译器之间使用相同的算法,因此,对于相同的种子,结果不会相同。

我能否依靠 std::random_shuffle 在不同的编译器中使用提供的相同随机数序列生成相同的输出?如果没有,还有其他选择吗?

不使用 C++11 或 Boost。

最佳答案

通过阅读 C++11 标准(我这里有的标准)中的“25.3.12 随机洗牌”,我得出结论,严格来说不能做出保证。该算法的唯一要求是“这些元素的每个可能排列具有相等的出现概率”。例如,它不必前后交换元素,并且迭代器是随机访问迭代器,因此任何其他顺序都是可能的。 (也就是说,如果一个实现不会首先 -> 最后,我会感到惊讶,但不能保证。)

关于c++ - std::random_shuffle 是否可以跨不同的编译器重现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24307813/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com