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

时间:2014-10-05 16:41:06

标签: c loops random

我试图在每次循环发生时创建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;
}

2 个答案:

答案 0 :(得分:9)

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

所以在你的随机函数之外运行这一行:

srand(time(NULL));

..而在你的主要功能中:

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;
}

答案 1 :(得分:0)

您只需要为随机函数播种一次。包括time.h库并使用

#include<time.h>
.....
srand(time(NULL));