这个问题已经在这里有了答案:
已关闭8年。
我有一个数组,我想改组它,我使用:
answerPositionArray[0] = 100;
answerPositionArray[1] = 400;
answerPositionArray[2] = 800;
std::random_shuffle(answerPositionArray, answerPositionArray + 2);
但是,每次我运行程序时,都会出现400、800、100相同的混洗。是否有一种方法可以使混洗每次都不同?例如。第一次100、800、400,然后800、400、100等。
谢谢
最佳答案
C++随机数并不是真正的随机数-它们是由称为种子的初始值生成的。如果不设置种子,则种子将始终相同,因此生成的序列不会改变。 std::random_shuffle
取决于随机数的生成,因此它也将以这种方式运行。
那么如何设置种子呢?利用:
srand(time(0));
在使用随机数调用任何函数之前。它将种子设置为当前时间(以秒为单位)。不要忘记添加适当的头文件。