我试图在每次循环发生时创建2个随机数(介于0-4和0-10之间),但它总是给出相同的数字。 如果我多次运行程序,它会给出不同的数字,但是while循环总是生成相同的2个数字。 感谢。
int random(int range){
int num;
srand(time(NULL));
num = rand() % range;
return num;
}
int main(){
int cnt = 0;
int i;
int j;
while (cnt <= 20) {
i = random(5);
j = random(10);
printf("%d\n",i);
printf("%d\n",j);
printf("\n");
cnt += 1;
}
return 0;
}
答案 0 :(得分:9)
您只需要为随机数生成器播种一次。
所以在你的随机函数之外运行这一行:
srand(time(NULL));
..而在你的主要功能中:
int random(int range){
int num;
num = rand() % range;
return num;
}
int main(){
int cnt = 0;
int i;
int j;
// Seed random number generator
srand(time(NULL));
while (cnt <= 20){
i = random(5);
j = random(10);
printf("%d\n",i);
printf("%d\n",j);
printf("\n");
cnt += 1;
}
return 0;
}
答案 1 :(得分:0)
您只需要为随机函数播种一次。包括time.h库并使用
#include<time.h>
.....
srand(time(NULL));