gpt4 book ai didi

c++ - shuffle和random_shuffle c++有什么区别

转载 作者:IT老高 更新时间:2023-10-28 21:34:22 31 4
gpt4 key购买 nike

函数std::shuffle已在 C++11 中引入:

template< class RandomIt, class URNG >
void shuffle( RandomIt first, RandomIt last, URNG&& g );

它与 std::random_shuffle 的重载之一具有相同的签名在 C++11 中也有介绍:

template< class RandomIt, class RandomFunc >
void random_shuffle( RandomIt first, RandomIt last, RandomFunc&& r );

区别在于第三个参数:

URNG must meet the requirements of UniformRandomNumberGenerator

就这些了吗?区别仅仅是 shuffle 执行额外的编译时间检查吗?其他行为是否相同?

最佳答案

std::random_shuffle 使用 std::rand() 函数来随机化项目,而 std::shuffle 使用 urng 是一个更好的随机生成器,尽管使用 std::random_shuffle 的特殊重载,您可以获得相同的行为(与 std::shuffle) 但这需要你做一些工作来传递第三个参数。

观看 Stephan T. Lavavej 的演讲,他在其中解释了为什么 std::rand 是一个糟糕的函数以及 C++ 程序员应该改用什么:

要点是,std::shuffle 是对 std::random_shuffle 的改进,C++ 程序员应该更喜欢使用前者。

关于c++ - shuffle和random_shuffle c++有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19219726/

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