【问题标题】:Is there a new way to shuffle an array in C++?有没有一种新方法可以在 C++ 中对数组进行洗牌?
【发布时间】:2021-08-02 10:07:12
【问题描述】:

我对编码(C++ 的第二学期)比较陌生,并且正在从事一个需要对字符串数组进行洗牌的项目。我过去使用 random_shuffle() 做了一个类似的程序,但发现它已经被弃用了。还有其他方法可以洗牌吗?

我正在使用 Xcode BTW,以防需要说明。

非常感谢任何帮助!这是我的第一篇文章,我敢肯定。

【问题讨论】:

标签: c++ arrays c++11 shuffle


【解决方案1】:

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);

而且它会比以往更快、更随机。

【讨论】:

  • 太棒了!让它工作得很好。非常感谢!
  • @SeanVanderaa,请随时将答案标记为正确。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-08
  • 2021-12-17
  • 2021-12-31
  • 2017-01-03
  • 2018-10-08
  • 1970-01-01
  • 2015-08-27
相关资源
最近更新 更多