问题提示
生日问题。假设人们一次进入一个房间。人们必须如何进入直到两个人共享生日?与直觉相反,在 23 人进入房间后,两人生日相同的概率约为 50-50。这种现象被称为生日问题或生日悖论。编写一个程序 Birthday.java,它接受两个整数命令行参数 n 和试验,并执行以下试验,试验次数:
为下一个人选择生日,在 0 和 n-1 之间均匀随机。让那个人进入房间。如果该人与房间里的其他人共享生日,请停止;否则重复。在每个实验中,计算进入房间的人数。打印一个表格,总结从 1 到分数达到的每个可能值 i 的结果(计数 i、恰好 i 人进入房间的次数以及 i 或更少人进入房间的次数) (或超过)50%。从离散分布中抽样
这是我的代码。我一直只输出一行,(1 999999.0 0.999999)并且无法弄清楚出了什么问题。
public class Birthday {
public static void main (String[]args)
{
int n = Integer.parseInt(args[0]);
int trials = Integer.parseInt(args[1]);
int[] times = new int[n];
boolean [] found = new boolean[n-1];
for (int i=0; i<trials; i++)
{
for (int j=0; j<n; j++)
{
int rand = (int) Math.random() * n;
if (!found[rand])
{
found[rand] = true;
}
else
{
times[j]++;
break;
}
}
}
int m = 0;
double frac = 0;
double count=0;
while (frac < 0.5)
{
count += times[m];
frac = count/trials;
System.out.println(m+1 + " " +count + " "+ frac);
m++;
}
}
}
请帮助我,我越来越绝望了哈哈!祝大家 MLK 日快乐。