Равномерное распределение простыми словами

Карьерник — квиз-тренажёр в Telegram с 1500+ вопросами для собесов аналитика. SQL, Python, A/B, метрики. Бесплатно.

Зачем это знать

Uniform — базовое распределение, из которого генерируются другие. random() в большинстве языков выдаёт Uniform(0, 1). Понимание uniform = понимание randomness в коде.

На собесах часто: «как сгенерировать сэмпл из distribution X имея только uniform?» — классика для middle.

Короткое объяснение

Все значения в заданном диапазоне равновероятны.

Discrete uniform

Равные вероятности для конечного набора.

Пример: кубик. P(каждая грань) = 1/6.

Continuous uniform U(a, b)

Плотность constant на [a, b], 0 вне.

f(x) = 1 / (b - a),  если a ≤ x ≤ b
       0,           иначе

Характеристики

Discrete (1 до N)

  • Mean: (N + 1) / 2
  • Variance: (N² - 1) / 12

Continuous U(a, b)

  • Mean: (a + b) / 2
  • Variance: (b - a)² / 12

Примеры

Кубик

Discrete uniform от 1 до 6.

random()

В Python random.random() → Continuous U(0, 1).

Случайная точка в квадрате

Two independent Uniform(0, 1) → uniform on [0,1]².

В Python

import numpy as np

# Discrete 1-6
np.random.randint(1, 7, 1000)

# Continuous U(0, 1)
np.random.random(1000)

# Continuous U(5, 10)
np.random.uniform(5, 10, 1000)

Inverse CDF sampling

Из uniform можно сэмплировать любое distribution с invertible CDF:

u ~ Uniform(0, 1)
x = F^(-1)(u) ~ нужное distribution

Это и есть базовый алгоритм генерации random sample.

Примеры использования

Bootstrap

Sample with replacement использует uniform для выбора индекса.

Monte Carlo

Симуляции в general используют uniform как базу.

A/B-тестирование

Assignment в группы через uniform: user_hash % 100 < 50 — почти uniform.

Initialization

Weights neural network часто инициализируют из uniform.

Uniform vs Normal

Uniform Normal
Форма plateau bell curve
Хвосты обрезаны infinite
Среднее (a+b)/2 μ
Variance (b-a)²/12 σ²

Uniform подходит для prior «ничего не знаю в этом диапазоне».

Non-informative prior

В Bayesian — uniform часто используется как non-informative prior:

Beta(1, 1) = Uniform(0, 1)

Нет предпочтения ни одного значения.

На собесе

«Как сгенерировать normal через uniform?» Box-Muller transform: two uniform → two independent normal.

«Почему uniform базовое?» Любое другое distribution можно получить через inverse CDF sampling.

«Variance U(0, 1)?» 1/12 ≈ 0.083.

«Когда uniform не подходит?» Когда у данных есть «предпочтение» — концентрация вокруг значения.

Частые ошибки

Предполагать uniform, когда не оно

Многие думают, что ввод от пользователя uniform. Обычно нет (есть bias).

Игнорировать границы

[a, b] — closed interval. (a, b) — open. В непрерывном случае разница нулевая, но формально важно.

Округление

Округление continuous до discrete меняет variance.

Связанные темы

FAQ

Discrete или continuous?

Discrete: целые значения. Continuous: real numbers.

Где чаще используется?

В коде — continuous (random). В теории — оба.

Как отличить от normal?

Histogram: uniform — плоский, normal — bell.


Тренируйте статистику — откройте тренажёр с 1500+ вопросами для собесов.