有没有更好的方法来计算这个概率?

Mer*_*hel 1 java math probability

所以我一直想知道在一群人中至少有一个人今天过生日的概率是多少。

我想出了一个这样的解决方案:

private BigDecimal probability(BigDecimal peopleCount) {
    BigDecimal days = new BigDecimal("365");

    BigDecimal omega = days.pow(peopleCount.intValue());
    BigDecimal excluded = days.subtract(BigDecimal.ONE).pow(peopleCount.intValue());

    return omega.subtract(excluded).divide(omega, 10, RoundingMode.HALF_UP);
}
Run Code Online (Sandbox Code Playgroud)

这似乎计算正确,但看起来也是一个糟糕的解决方案 - 对于 1000 人,我需要计算 365^1000(一些疯狂的数字)。

有没有人知道更好(更清洁)的方法来做到这一点?

谢谢。

Ala*_*lan 5

至少有一个拥有它的概率是 1.0 减去没有人拥有生日的概率。

一个人没有生日的概率,或 364/365 = a。

所有 1000 个不拥有(等于没有人拥有)的概率是每个的概率相乘 = a^1000。

答案是 1.0 - (364/365)^1000。

如果我们计算 2 月 29 日的闰年和其他通常是闰年的非闰年,我们会得到一个微调的数字,接近 365.25,但不完全是。那可以是分母。