我现在已经半个小时撞到了这个头,并且不知道出了什么问题.我正在尝试生成一个包含10个随机数的列表,1-100.但是当我运行它们时,它们都会出现相同的数字.这非常令人沮丧!我认为这是因为数字仍然存储在RAM中,但在将随机数和变量重新随机化三次后,它仍然会出现相同的数字.我究竟做错了什么?
码:
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;
}
Run Code Online (Sandbox Code Playgroud)
不要srand()
多次打电话.这段代码可能需要不到一秒的时间来执行,所以每当你srand(time(NULL))
在实现时以秒为单位调用时间时,你只需将伪随机数生成器重置为相同的种子,所以你的所有数字都是相同的.