feat: add birthday paradox

This commit is contained in:
2025-07-18 21:39:56 +08:00
parent 2f64c7f9f6
commit 056e2f1fdb
2 changed files with 30 additions and 1 deletions

View File

@@ -8,4 +8,4 @@
| Sqrt10 | 求 $\sqrt{10}$【连分数】 | [resolve-sqrt-10](https://hatter.ink/static/resource/muboard/?id=resolve-sqrt-10&version=latest&full=1) |
| WallisProduct | 沃里斯乘积 | [wallis-product](https://hatter.ink/static/resource/muboard/?id=wallis-product&version=latest&full=1) |
| EulerNumber | 欧拉数 | [eulers-number](https://hatter.ink/static/resource/muboard/?id=eulers-number&version=latest&full=1) |
| BirthdayParadox | 生日悖论 | [birthday-paradox](https://hatter.ink/static/resource/muboard/?id=birthday-paradox&version=latest&full=1) |

View File

@@ -0,0 +1,29 @@
package me.hatter.math;
import java.math.BigDecimal;
import java.math.RoundingMode;
public class BirthdayParadox {
public static void main(String[] args) {
System.out.println(p(1));
System.out.println(p(10));
System.out.println(p(20));
System.out.println(p(23));
System.out.println(p(30));
System.out.println(p(40));
System.out.println(p(50));
System.out.println(p(60));
}
public static BigDecimal p(int n) {
BigDecimal p = BigDecimal.ONE;
for (int i = 1; i < n; i++) {
p = p.multiply(BigDecimal.ONE.subtract(BigDecimal.valueOf(i).divide(BigDecimal.valueOf(365), 100, RoundingMode.FLOOR)));
}
if (!p.equals(BigDecimal.ONE)) {
p = p.divide(BigDecimal.ONE, 100, RoundingMode.FLOOR);
}
return BigDecimal.ONE.subtract(p);
}
}