首页 > 解决方案 > 生日问题 - N 中至少有 2 个

问题描述

我收到了一些修改过的生日问题——我需要运行一个函数来返回 N 人中至少有两个人生日相同的概率。然后是一个计算最小 n 的主函数,使得这个概率至少为 0.5。我试图写一个,但唯一的输出是 0 或 1,我会很感激调试或指出我做错了什么。这是我所做的:

public class Birthday {

    public static double probSameBirthday(int n) {
        double days = 1 / 365;   // number of days
        int i, person = 0;       // total number of people
        double noProb = 0;
        int people = n;

        for (i = 2; i <= n; i = i + 1) {
            person = i;
            noProb = (1 - ( noProb * (1 - (person - 1) * days))) / 100;
        }

        return (noProb);        
    }

    public static void main(String[] args){
        int n = Integer.parseInt(args[0]);
        System.out.println(probSameBirthday(n));
    }
}

标签: javabirthday-paradox

解决方案


感谢评论回答:将日期更改为

double days = 1.0 / 365.0;

 the noProb =(1-( noProb * (1- (person-1)*days)))/100;

noProb =( noProb * (1- (person-1)*days));

现在返回它的运行方式与https://www.dcode.fr/birthday-problemreturn (1-noProb); 中的计算器相同


推荐阅读