while循环中的随机数[C编程]

Ped*_*dro 3 c random loops

我试图在每次循环发生时创建2个随机数(0-4和0-10之间),但它总是给出相同的数字.如果我多次运行程序,它会给出不同的数字,但是while循环总是生成相同的2个数字.谢谢.

int random(int range){
    int num;
    srand(time(NULL));
    num = rand() % range;
    return num;
}

int main(){

    int cnt = 0;
    int i;  
    int j;
    while (cnt <= 20) {
        i = random(5);
        j = random(10);
        printf("%d\n",i);
        printf("%d\n",j);
        printf("\n");
        cnt += 1;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

bwe*_*egs 9

您只需要为随机数生成器播种一次.

因此,在随机函数之外运行此行:

srand(time(NULL));
Run Code Online (Sandbox Code Playgroud)

..在你的主要功能中:

int random(int range){
    int num;
    num = rand() % range;
    return num;
}

int main(){
    int cnt = 0;
    int i;    
    int j;

    // Seed random number generator
    srand(time(NULL));

    while (cnt <= 20){
        i = random(5);
        j = random(10);
        printf("%d\n",i);
        printf("%d\n",j);
        printf("\n");
        cnt += 1;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)