Ймовірність · Стохастичні процеси
📅 Липень 2026 ⏱ ≈ 12 хв читання 🎯 Середній рівень

Розподіл Пуассона та процес Пуассона

Чому рідкісні незалежні події — радіоактивний розпад, запити до сервера, друкарські помилки на сторінці — підпорядковуються одній і тій самій простій формулі? Ми виведемо розподіл Пуассона як граничний випадок біноміального розподілу, побудуємо неперервний у часі процес Пуассона з експоненційних часів очікування та симулюємо обидва на JavaScript.

Коротко: Розподіл Пуассона — це граничний випадок біноміального розподілу при великій кількості випробувань і малій імовірності успіху: P(X=k) = e^-λ λ^k/k!. Його неперервна версія, процес Пуассона, має експоненційно розподілені часи очікування між подіями, а кількість подій можна об'єднувати (суперпозиція) або розділяти (проріджування), залишаючись пуассонівською — це основа моделювання розпаду, черг і серверного трафіку, реалізована тут на JavaScript.

1. Розподіл Пуассона

Дискретна випадкова величина X має розподіл Пуассона з параметром інтенсивності λ > 0, якщо вона рахує кількість подій у фіксованому інтервалі, коли події відбуваються незалежно з постійною середньою швидкістю:

P(X = k) = e−λ · λk / k!,   k = 0, 1, 2, …

λ одночасно є математичним сподіванням і дисперсією X — характерна ознака даних із розподілом Пуассона. Якщо ви щось рахуєте і вибіркова дисперсія близька до вибіркового середнього, Пуассон — природна перша модель.

2. Від біноміального до Пуассонового: граничний перехід

Поділимо інтервал на n дуже коротких підінтервалів, кожен настільки короткий, що в ньому може статися щонайбільше одна подія, з імовірністю p = λ/n. Кількість подій тоді має розподіл Binomial(n, p):

P(X = k) = C(n,k) · pᵏ · (1−p)ⁿ⁻ᵏ,   p = λ/n

Візьмемо границю при n → ∞, тримаючи λ = np сталим. Розкриваючи біноміальний коефіцієнт і використовуючи стандартну границю (1 − λ/n)ⁿ → e−λ:

C(n,k)·pᵏ·(1−p)ⁿ⁻ᵏ = [n!/(k!(n−k)!)] · (λ/n)ᵏ · (1−λ/n)ⁿ⁻ᵏ

= (λᵏ/k!) · [n(n−1)···(n−k+1)/nᵏ] · (1−λ/n)ⁿ · (1−λ/n)⁻ᵏ

// при n→∞: середня дужка → 1, (1−λ/n)ⁿ → e⁻λ, (1−λ/n)⁻ᵏ → 1

→ (λᵏ/k!) · e−λ

Це закон рідкісних подій (граничну теорему Пуассона формалізував Сімеон Дені Пуассон у 1837 році): біноміальний розподіл із багатьма випробуваннями та малою ймовірністю успіху в кожному, але сталим добутком np = λ, збігається до Poisson(λ). На практиці апроксимація вже дуже точна при n ≥ 20, p ≤ 0.05.

3. Процес Пуассона та часи очікування

Процес Пуассона розширює розподіл на неперервний час. Це процес підрахунку N(t), що задовольняє три аксіоми:

Разючий наслідок: час між послідовними подіями — час між надходженнями — має експоненційний розподіл із тим самим параметром λ.

P(жодної події на [0,t]) = P(N(t) = 0) = e−λt

P(T > t) = e−λt  ⟹  T ~ Exponential(λ), f(t) = λe−λt

Оскільки експоненційний розподіл є «без пам'яті» — P(T > s+t | T > s) = P(T > t) — процес не «пам'ятає», скільки він уже чекав. Саме це робить процес Пуассона канонічною моделлю для надходжень, які справді випадкові й некорельовані.

Пряма симуляція процесу Пуассона: замість вибірки лічильників Пуассона по бінах можна генерувати процес напряму, повторно беручи експоненційні проміжки Δt = −ln(U) / λ (U ~ Uniform(0,1)) і накопичуючи моменти надходження. Це точний метод без похибки дискретизації.

4. Властивості: середнє, дисперсія, суперпозиція, проріджування

ВластивістьФормулаІнтерпретація
СереднєE[X] = λОчікувана кількість за інтервал
ДисперсіяVar[X] = λРівнодисперсність — середнє = дисперсія
Асиметрія1/√λСкіс вправо при малих λ, ≈ Normal при великих λ
Твірна функція моментівM(t) = exp(λ(eᵗ−1))Породжує всі моменти

Суперпозиція

Якщо два незалежні процеси Пуассона з параметрами λ₁ та λ₂ об'єднати (наприклад, надходження від двох незалежних серверів в одну чергу), об'єднаний процес буде Пуассоновим з параметром λ₁ + λ₂. Це прямо випливає з адитивності незалежних Пуассонових випадкових величин: X₁ ~ Poisson(λ₁), X₂ ~ Poisson(λ₂) ⟹ X₁ + X₂ ~ Poisson(λ₁ + λ₂).

Проріджування

І навпаки, якщо кожна подія процесу Poisson(λ) незалежно залишається з ймовірністю p (наприклад, лише 10% вхідних запитів — помилки), залишені події утворюють процес Пуассона з параметром λp, а відкинуті — незалежний процес Пуассона з параметром λ(1−p). Ця властивість «розщеплення» унікальна для процесів Пуассона і активно використовується в аналізі мереж масового обслуговування.

5. Застосування

Галузьλ означаєk рахує
Радіоактивний розпадШвидкість розпадуЧастинки, зафіксовані за секунду
Кол-центр / веб-серверЗапити за хвилинуЗапити за конкретну хвилину
Друкарські помилки в рукописіСередня кількість помилок на сторінкуПомилки на конкретній сторінці
Страхові виплатиВиплати на рікВиплати, оформлені за рік
Теорія черг M/M/1Швидкість надходження λ, швидкість обслуговування μКлієнти в системі

Найпростіша модель теорії черг — M/M/1 («марковські надходження, марковське обслуговування, 1 сервер») — припускає, що і надходження, і завершення обслуговування підпорядковуються процесам Пуассона. Саме тому процес Пуассона є відправною точкою для планування пропускної здатності серверів, кол-центрів та перехресть.

6. Реалізація на JavaScript

Вибірка з Poisson(λ) — алгоритм Кнута

// Кнут (1969): точний метод для малих-помірних λ. O(λ) часу на вибірку.
function samplePoisson(lambda) {
  const L = Math.exp(-lambda);
  let k = 0, p = 1;
  do {
    k++;
    p *= Math.random();
  } while (p > L);
  return k - 1;
}

Пряма симуляція процесу через експоненційні проміжки

// Генерує моменти надходження на [0, T] через точні експоненційні інтервали.
function simulatePoissonProcess(lambda, T) {
  const arrivals = [];
  let t = 0;
  while (true) {
    const u = Math.random();
    const gap = -Math.log(u) / lambda;  // експоненційний проміжок надходження
    t += gap;
    if (t > T) break;
    arrivals.push(t);
  }
  return arrivals;
}

// Перевірка: розбиваємо на одиничні інтервали — лічильники мають бути ~Poisson(lambda)
function countsPerUnitInterval(arrivals, T) {
  const bins = new Array(Math.ceil(T)).fill(0);
  for (const t of arrivals) bins[Math.floor(t)]++;
  return bins;
}

const arrivals = simulatePoissonProcess(4.5, 1000); // λ=4.5 подій/одиницю часу
const counts   = countsPerUnitInterval(arrivals, 1000);
const mean     = counts.reduce((a,b)=>a+b,0) / counts.length;
const variance = counts.reduce((s,x)=>s+(x-mean)**2,0) / counts.length;
console.log(mean, variance); // обидва мають бути близькі до 4.5

7. Неоднорідні процеси

Реальні швидкості надходження рідко залишаються сталими — трафік пікує в години пік, дзвінки різко зростають після оголошення про збій. Неоднорідний процес Пуассона (НПП) замінює сталу λ функцією швидкості, що змінюється в часі, λ(t). Кількість подій на [0,t] має розподіл Пуассона із середнім, що дорівнює інтегралу швидкості:

N(t) ~ Poisson( Λ(t) ),   Λ(t) = ∫₀ᵗ λ(s) ds

Найпростіша техніка симуляції — проріджування (алгоритм Льюїса-Шедлера): симулюємо однорідний процес Пуассона з максимальною швидкістю λ_max, а потім залишаємо кожну кандидатну подію незалежно з імовірністю λ(t)/λ_max. Це зводить неоднорідний випадок до звичайного проріджування Пуассона, яке ми вивели в розділі 4.

🎯 Дослідіть симуляції Монте-Карло

Запустіть тисячі стохастичних випробувань у браузері та спостерігайте закон великих чисел у дії.

Відкрити симуляцію →

🔗 Пов'язані симуляції

🎯Монте-Карло 🃏Ланцюг Маркова 📈Нормальний розподіл 🎯Баєсівський висновок