0

コードは、シミュレーションを実行して、同じ誕生日を共有する n 人の確率を調べることです。

ランダムに割り当てられた生年月日を日付の配列と比較しました。等しい値が複数ある日付については、分子に 1 を追加しました。

ただし、コードの答えは間違っています。理由はわかりません。

import java.util.Scanner;
public class birthday {
public static void main (String[] args) {

Scanner inp = new Scanner(System.in);

System.out.println("How many trials");
int n = inp.nextInt();

//variable declaration
double[] birthdate = new double[n];
int num = 0;
int numerator = 0;
double bday = 0;
int trials = 0;

//assign birthdays to n people
for (int i = 0; i < n; i++)
{
    birthdate[i] = Math.floor(Math.random() * 365) + 1;
    System.out.println(birthdate[i]);
}

for (int i = 1; i <= 365; i++)
{
    for (int j = 0; j < n; j++)
    {
        bday = birthdate[j];

        //compare birthdates to dates
        if (bday == i)
            {
                num++;
                if (num > 1)
                {
                    numerator++;
                }
            }
    }
    num = 0;
}

double ans = (double) numerator / n;
System.out.println("The answer is " + ans);

}
}
4

1 に答える 1