繁体   English   中英

有没有一种新方法可以在 C++ 中对数组进行洗牌?

[英]Is there a new way to shuffle an array in C++?

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM