C随机数发生器编号相同

时间:2015-04-09 13:28:01

标签: c

如果我的函数被调用,我如何得到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函数多少次,它总是打印相同的数字。我如何解决这个问题,因此每次通话的号码都不同。

2 个答案:

答案 0 :(得分:7)

time函数通常会返回第二个分辨率的时间,这意味着如果您在一秒钟内调用time(NULL)两次,那么您将获得相同的结果。

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

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

答案 1 :(得分:4)

移动

srand ( time(NULL));

main()。您需要在srand()中致电main()并继续致电rand()