每次运行代码时,rand()数组都不会更改

时间:2016-06-05 06:18:17

标签: c random

对于我正在运行的小程序,我使用rand()函数为23个整数的数组提供数字。我发现每次运行代码时,它都会重复使用之前在数组中使用的相同数字,因此我每次迭代都不会得到不同的结果。我该如何解决这个问题?

编辑:代码是生日悖论的实验。这个悖论表明,与一个满23个人的房间里的任何人分享生日的机会是50%,但自然大多数人会认为它比这个小得多。

#include "stdio.h"
#include "stdlib.h"

#define interations 10 //number of repitition in the code for a more accurate percentage
#define numppl 23 //number of people

int main()
{
    int inv;
    float percent = 0, sum = 0;
    int i, j, k;
    int seq[numppl];

    for (inv = 0; inv < interations; inv++)
    {
        for (i = 0; i < numppl; i++) {
            seq[i] = rand() % 365;  //creates a random array of 'numppl' integers every iteration
        }

        for (j = 0; j < numppl; j++)
        {
            for (k = j + 1; k < numppl; k++)
            {
                if (seq[j] == seq[k]) //if any two number in the array match each other, increment sum by 1 
                    sum++;
            }
        }
    }

    percent = (sum / interations) * 100; //divide the amount of arrays with numbers that match with the number of total arrays generated for a percentage

    printf("Chance of two people sharing the same birthday is %f percent", percent);
}

每次迭代都是一个不同的随机数组,但是当我再次运行代码时,数组与以前相同,所以得到相同的百分比

1 个答案:

答案 0 :(得分:1)

这是rand()的预期行为。您需要使用srand()为随机数生成器播种。