Калькулятор биномиального распределения

Вычисляет биномиальные вероятности P(X=k), P(X≤k) и P(X≥k).

Часто задаваемые вопросы

Реализация кода

import math

def binomial_pmf(n: int, k: int, p: float) -> float:
    """P(X = k) for Binomial(n, p)"""
    log_c = math.lgamma(n + 1) - math.lgamma(k + 1) - math.lgamma(n - k + 1)
    log_p = k * math.log(p) + (n - k) * math.log(1 - p) if 0 < p < 1 else (0 if p == k / n else float('-inf'))
    return math.exp(log_c + log_p)

def binomial_cdf(n: int, k: int, p: float) -> float:
    """P(X <= k)"""
    return sum(binomial_pmf(n, i, p) for i in range(k + 1))

# Example: 10 coin flips, p=0.5, exactly 6 heads
n, k, p = 10, 6, 0.5
print(f"P(X = {k}) = {binomial_pmf(n, k, p):.4f}")
print(f"P(X ≤ {k}) = {binomial_cdf(n, k, p):.4f}")
print(f"P(X ≥ {k}) = {1 - binomial_cdf(n, k - 1, p):.4f}")
print(f"Mean = {n * p:.2f}, Std Dev = {(n * p * (1 - p)) ** 0.5:.2f}")

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.