我已经为此苦苦思索了半个小时,但不知道哪里出了问题。 我正在尝试生成 10 个随机数的列表,1-100。但是当我运行它时,它们都得出相同的数字。这是非常令人沮丧的!我还以为是因为这个数字还保存在RAM中,但是把随机数和变量重新随机化了3次之后,出来的还是一样的数字。我做错了什么?
代码:
main() {
int i;
int randnum;
srand(time(NULL));
randnum = rand() % 2;
for (i = 0; i < 10; i++) {
srand(time(NULL));
randnum = rand() % 100 + 1;
srand(time(NULL));
rand();
list[i] = randnum;
srand(time(NULL));
randnum = rand() % 100 + 1;
srand(time(NULL));
rand();
}
srand(time(NULL));
randnum = rand() % 100 + 1;
}
最佳答案
不要多次调用 srand()
。此代码的执行时间可能不到一秒,因此每次调用 srand(time(NULL))
时,您只需将伪随机数生成器重置为相同的种子,所以你所有的数字都是一样的。
关于c++ - 在 C++ 中生成相同的随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18949163/