feat: add birthday paradox
This commit is contained in:
@@ -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) |
|
||||
|
||||
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