我需要在for循环中生成1000个随机数。
我的问题是生成的随机数总是一样的。因为我使用时间NULL来启动发生器,为什么我得到相同的数字?这是我使用的代码:
#include <stdio.h>
#include <stdlib.h>
#define LIMIT 30000
int main(){
int i;
srand((long) time(NULL));
for(i = 0; i < 1000; i++){
int x = rand() % LIMIT;
printf("%d\n", x);
}
}
答案 0 :(得分:0)
如果在同一秒内多次运行程序,则会将相同的值作为种子传递给生成器。在再次尝试之前,你必须等待至少一秒钟。
这是因为time
函数返回自特定时间以来的秒数,如果在同一秒内多次调用将返回相同的值。
答案 1 :(得分:0)
您的代码是正确的,但您忘记包含time.h库。
#include <stdio.h>
#include <stdlib.h>
#include <time.h> // <--- now it works
#define LIMIT 30000
int main(){
int i;
srand((long) time(NULL));
for(i=0;i<1000;i++){
int x = rand() % LIMIT;
printf("%d",x);}