【问题标题】:Can I return a different sequences from a function?我可以从函数返回不同的序列吗?
【发布时间】:2016-08-08 19:21:56
【问题描述】:

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

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

【问题讨论】:

  • 你说,在函数a中,声明一个随机选择的种子并使用它。对吗?
  • 使用正确的原型函数声明符。而且代码无论如何都不符合标准,因为您没有声明您使用的函数(printfrand 等)。

标签: c function random time srand


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:
    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");
    }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-18
      • 2021-09-19
      • 1970-01-01
      • 2018-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-09
      相关资源
      最近更新 更多