feat: add birthday paradox
This commit is contained in:
29
src/main/java/me/hatter/math/BirthdayParadox.java
Normal file
29
src/main/java/me/hatter/math/BirthdayParadox.java
Normal 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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user