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()