我可以从函数返回不同的序列吗?

时间:2016-04-16 22:30:40

标签: c function random time srand

//我写了一个返回数组值的函数。值必须是 随机选择。但是在main函数中,当我调用funtion时,它给了我相同的值。我想要不同的随机数字,我可以避免吗?

void a();

int main(){
a();
a();
return 0;
} 
void a(){
int i, b[6];
srand(time(NULL));

for(i=0; i<6; i++){
    b[i]= rand()%10 +1;
    printf("%d " , b[i]);
    if(i==5) printf("\n");
}
}

2 个答案:

答案 0 :(得分:2)

您应该只对随机发生器播种一次。通过在彼此之后快速播种两次,很有可能时间和种子值仍然相同,伪随机数生成器将返回相同的序列两次。

void a();

int main()
{
    srand(time(NULL)); //Seed only once...
    a();
    a();
    return 0;
} 

void a()
{
    int i, b[6];


    for(i=0; i<6; i++)
    {
        b[i]= rand()%10 +1;
        printf("%d " , b[i]);
        if(i==5) 
             printf("\n");
    }
}

答案 1 :(得分:1)

void a();

int main(){
srand(time(NULL));
a();
a();
return 0;
} 
void a(){
int i, b[6];

for(i=0; i<6; i++){
    b[i]= rand()%10 +1;
    printf("%d " , b[i]);
    if(i==5) printf("\n");
}
}