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

@@ -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);
}
}