#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int dorand(){
int i;
srand(time(0));
i = rand()%3+1;
return i;
}
int main (){
printf("\n %d \n", dorand());
printf("\n %d \n", dorand());
printf("\n %d \n", dorand());
printf("\n %d \n", dorand());
return 0;
}
问题是:四个printf正在打印相同的数字。 当我直接在main函数中执行rand()时,根本没有问题,但是当我调用一个函数时,随机生成会上瘾到相同的数字。有人有经验可以分享吗?
我试过了:
int main (){
srand(time(0)) //seeding in the main function before calling the dorand function
printf("\n %d \n", dorand());
printf("\n %d \n", dorand());
printf("\n %d \n", dorand());
printf("\n %d \n", dorand());
return 0;
}
另外
int dorand(){
int i;
i = 0; //clearing the variable before attributing a new rand value
srand(time(0));
i = rand()%3+1;
return i;
}
对不起,如果我误解了一些事情,谢谢你的帮助
答案 0 :(得分:0)
srand
函数为随机数生成器播种。对于给定的种子值,将生成相同的随机数集。
由于每次想要一个随机数时重新播种,使用当前时间作为种子,假设每次调用函数都在同一秒内发生,随机数函数将以相同的值播种,所以你不断得到相同&#34;随机&#34;号。
您应该在程序开头只调用一次srand
。从dorand
移除来电并将其置于main
的顶部。