有没有一种在 C++ 中随机排列数组的新方法?
Is there a new way to shuffle an array in C++?
我对编码(C++ 第二学期)还比较陌生,并且正在从事一个需要随机排列字符串数组的项目。我过去使用 random_shuffle() 做过类似的程序,但发现它已被弃用。还有其他方法可以打乱数组吗?
我正在使用 Xcode 顺便说一句,以备不时之需。
非常感谢任何帮助!这是我的第一个post,我敢肯定。
std::random_shuffle
由于使用默认的伪随机生成器而被弃用,因为它太糟糕了。现在,std::shuffle
允许您使用 c++11 令人敬畏的新随机设备机制。你可以在重载中看到:
template< class RandomIt, class URBG >
void shuffle( RandomIt first, RandomIt last, URBG&& g );
其中 URGB
是您希望它使用的随机发生器。所以现在你可以这样称呼它:
std::random_device rd;
std::mt19937 g(rd());
std::shuffle(std::begin(my_array), std::end(my_array), g);
而且它会比以往任何时候都更快、更随机。
我对编码(C++ 第二学期)还比较陌生,并且正在从事一个需要随机排列字符串数组的项目。我过去使用 random_shuffle() 做过类似的程序,但发现它已被弃用。还有其他方法可以打乱数组吗?
我正在使用 Xcode 顺便说一句,以备不时之需。
非常感谢任何帮助!这是我的第一个post,我敢肯定。
std::random_shuffle
由于使用默认的伪随机生成器而被弃用,因为它太糟糕了。现在,std::shuffle
允许您使用 c++11 令人敬畏的新随机设备机制。你可以在重载中看到:
template< class RandomIt, class URBG >
void shuffle( RandomIt first, RandomIt last, URBG&& g );
其中 URGB
是您希望它使用的随机发生器。所以现在你可以这样称呼它:
std::random_device rd;
std::mt19937 g(rd());
std::shuffle(std::begin(my_array), std::end(my_array), g);
而且它会比以往任何时候都更快、更随机。