版权声明:本文为博主原创文章,未经博主允许不得转载。
一、问题描述
30人的班级,出现生日重复的概率有多大?
二、解题思路及代码
假设做够 1000*100次实验,30次为一轮,每次随机生成数字1-365,只要生日出现重复,那么用于统计重复次数的变量 n 就自增 1 ,最后把 n 除以 1000*100,得到答案。
1 class ProbabilisticSimulation { 2 public static void main(String[] args) { 3 final int N = 1000 * 100; 4 int n = 0; 5 for (int i = 0; i < N; i++) { 6 int[] x = new int[366]; 7 for (int j = 0; j < 30; j++) { 8 int p = (int) (Math.random() * 365 + 1);//取1-365,所以数组为了不越界,长度是366 9 if (x[p] == 1) { 10 n++; 11 break; 12 } else { 13 x[p] = 1; 14 } 15 } 16 } 17 double r = (double) n / N; 18 System.out.println(r); 19 } 20 }