c ++数组shuffle不工作

时间:2016-04-27 07:01:23

标签: c++

我试图改变字符串数组,并在尝试了random_shuffle之后获得了相同的数组,如下所示。

std::string arr[5] = {"a","b","c","d","e"};
random_shuffle(std::begin(arr), std::end(arr));

当我打印出来时,洗牌数组在我的程序的多次执行中的顺序相同。

2 个答案:

答案 0 :(得分:3)

您可能忘了播种随机生成器。这应该被称为至少一次,最好是一次。最好是在课程开始时。

std::srand(std::time(0));

答案 1 :(得分:1)

std::random_shuffle中,随机数生成器是实现定义的,但经常使用函数std::rand

除非您使用std::srand为RNG播种,否则每次运行该程序时都会获得相同的随机播放顺序。

根据this answer中kake_fisk的建议,一种可能的解决方法是将std::srandstd::time一起使用。