我做了一个着名的生日悖论的小实现,试图找到两个随机生日(这里是1到365之间的整数)之间的碰撞第一次.但它总是返回一个值,比如40和70,这根本不符合统计数据.我的算法或随机int生成器都有问题吗?感谢您的反馈意见.
这是代码:
public static void main(String[] args){
int[] birthday = new int[200];
for(int i = 0; i<20;i++){
Collision(birthday);
}
}
public static int Collision(int birthday[]){
Random rand = new Random();
for(int i = 1; i<birthday.length;i++){
birthday[i] = rand.nextInt(365);
}
int count = 0;
for(int i = 0; i<birthday.length; i++){
for(int j= i+1 ; j<birthday.length; j++){
if (birthday[i] == birthday[j]){
count++;
}
}
}
System.out.print(count+" ");
return count;
}
Run Code Online (Sandbox Code Playgroud)
这是ex的输出:
45 50 60 52 53 53 50 49 37 68 52 …