C随机数发生器编号相同

use*_*148 -5 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;
}
Run Code Online (Sandbox Code Playgroud)

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

Som*_*ude 7

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

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

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