( n: number, p: number, prob: number, deadline?: number )
| 57 | |
| 58 | /** Quantile of Binomial(n, p) at probability `prob` (an integer in [0, n]). */ |
| 59 | export function binomialQuantile( |
| 60 | n: number, |
| 61 | p: number, |
| 62 | prob: number, |
| 63 | deadline?: number |
| 64 | ): number { |
| 65 | const mean = n * p; |
| 66 | const stddev = Math.sqrt(n * p * (1 - p)); |
| 67 | // CDF(k) = P(X ≤ k) = I_{1−p}(n−k, k+1); the kernel is undefined at a=0, |
| 68 | // so the k ≥ n endpoint (CDF = 1) is handled explicitly. |
| 69 | const cdf = (k: number): number => |
| 70 | k >= n ? 1 : k < 0 ? 0 : betaRegularized(1 - p, n - k, k + 1); |
| 71 | return discreteQuantile(cdf, prob, mean, stddev, 0, n, deadline); |
| 72 | } |
| 73 | |
| 74 | /** Quantile of Poisson(λ) at probability `prob` (a non-negative integer). */ |
| 75 | export function poissonQuantile( |
no test coverage detected