В вашем методе FindThePerctange у вас есть проблема.Внутри цикла while вы объявляете переменную j, устанавливаете ее в 0, увеличиваете до 1, а затем сразу возвращаете.Это означает, что вы получите 1 каждый раз.
Я думаю, что вы пытаетесь сделать это увеличивать j каждый раз в цикле while.Если да, поместите объявление j вне цикла while, например, так:
int FindThePerctange(int DayOfBirth [], int GroupNumber){
double Overlap = 0, Percentage;
int j;
for (int d =0; d<=10000; d++){
//(GroupNumber, DayOfBirth);
j = 0;
while (d <= 365){
j++;
if(DayOfBirth[j] >= 2){
Overlap++;
j=365;
}
}
Percentage = (Overlap/10000)*100;
return Percentage;
}
}
Это все равно не заставит ваш код работать, но оно по крайней мере не вернет 1. Я не собираюсьпереписать всю вашу программу для вас (кто-то другой, вероятно, будет), но она не делает то, что вы ожидаете.
Редактировать: Я хочу помочь вам больше, но ваш код внутренне несовершенен.Ваша самая большая проблема, вероятно, в том, что вы не присваиваете значение массиву DayOfBirth.Я бы предложил вернуться и перекодировать это.Проблема, которую вы задаете, тривиальна.Рассмотрим следующее:
Предположим, что день рождения каждого человека является случайным числом от 1 до 365. Затем назначается день рождения первого человека A. Второй человек имеет шанс 1 на 365 попасть в тот же день.Таким образом, для размера группы 2 вероятность составляет 1/365 или около 0,27.Если предположить, что размер группы равен 3, а 2-й человек не попал первым, у третьего есть шанс 2/365, или около 0,44%.Предполагая, что генератор случайных чисел является абсолютно случайным, ваш шанс на то, что две даты рождения будут сталкиваться, будет (groupsize - 1) / 365.
Таким образом, ваш код должен будет только принять GroupSize.Сокращено до:
<code>
float FindThePerctange(int GroupNumber){
return (GroupNumber - 1) / 365 * 100;
}