C随机数发生器编号相同

如何调用c中的随机数生成器,在调用函数时给出不同的数字。

#include  #include  #include  int main() { printf("%i",num()); printf("%i",num()); } int num() { int MAX = 100; srand ( time(NULL)); int num = rand() % MAX; return num; } 

无论我调用num函数多少次,它总是打印相同的数字。 我如何解决这个问题,因此每次通话的号码都不同。

time函数通常以秒为单位返回时间,这意味着如果在一秒钟内调用两次time(NULL) ,则会得到相同的结果。

这当然意味着您将相同的起始种子设置为随机数生成器,这意味着序列将是相同的。

您通常只在main函数的早期调用一次 srand

移动

 srand ( time(NULL)); 

main() 。 你需要在main()调用一次srand() main()并继续调用rand()