如果我的函数被调用,我如何得到c中的随机数生成器给我不同的数字。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
printf("%i",num());
printf("%i",num());
}
int num() {
int MAX = 100;
srand ( time(NULL));
int num = rand() % MAX;
return num;
}
无论我调用num函数多少次,它总是打印相同的数字。我如何解决这个问题,因此每次通话的号码都不同。
答案 0 :(得分:7)
time
函数通常会返回第二个分辨率的时间,这意味着如果您在一秒钟内调用time(NULL)
两次,那么您将获得相同的结果。
这当然意味着您将相同的起始种子设置为随机数生成器,这意味着序列将是相同的。
您通常只在srand
函数的早期调用main
一次。
答案 1 :(得分:4)
移动
srand ( time(NULL));
到main()
。您需要在srand()
中致电main()
并继续致电rand()