有没有一种在 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);

而且它会比以往任何时候都更快、更随机。