【问题标题】:how to generate two random arrays in c [duplicate]如何在c中生成两个随机数组[重复]
【发布时间】:2022-01-19 01:45:32
【问题描述】:

我想生成两个随机数组 不管我怎么尝试,但这两张表总是相同的

double *init_rand_w(double tableau[],int tailleTableau) {
    //double *tableau=malloc(tailleTableau*sizeof(double));
    srand(time(NULL));

    for (int i = 0 ; i < tailleTableau ; i++)
    {

        tableau[i]=((double)rand())/((double)RAND_MAX);
    }

    return  tableau;
}

int main()
{
    double *t1=(double*)malloc(sizeof(double)*10);
    double *t2=(double*)malloc(sizeof(double)*10);

    t1=init_rand_w(t1,5);
    t2=init_rand_w(t2,5);

    shuffle(t2,5);

    printf("***************************\n");

    for (int x = 0; x <5; x++)
    {
        printf("%f  ,  %f \n", t1[x],t2[x]);
    }
}

【问题讨论】:

  • 不要给srand打两次电话。您的循环运行速度肯定足够快,以至于您对 srand 的两次调用发生在同一秒内,因此 time() 返回相同的值。
  • 在程序开始时调用srand(time(NULL));一次。
  • 谢谢你们,它有效

标签: arrays c


【解决方案1】:

您应该在程序开始时调用一次srand。它初始化随机数生成器的状态。您当前正在调用它两次,并且每次调用它时都可能给它相同的种子值(因为您的程序运行时间不到一秒),因此您将获得相同的随机数序列。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-20
    • 1970-01-01
    • 2014-11-10
    • 1970-01-01
    • 2012-12-17
    • 2021-08-02
    相关资源
    最近更新 更多