对于我正在运行的小程序,我使用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);
}
每次迭代都是一个不同的随机数组,但是当我再次运行代码时,数组与以前相同,所以得到相同的百分比
答案 0 :(得分:1)
这是rand()
的预期行为。您需要使用srand()
为随机数生成器播种。