Вероятность как доля: частотный смысл
Учимся видеть вероятность как долю успехов в длинной серии испытаний и проверять её симуляцией.
Вероятность события — это доля испытаний, в которых событие происходит, когда число испытаний неограниченно растёт.
Слово «вероятность» каждый понимает интуитивно: «скорее всего», «вряд ли», «пятьдесят на пятьдесят». Но интуиция обманчива, и чтобы строить надёжные рассуждения, нужно определение, которое можно проверить. Самое наглядное из них — частотное. Представьте, что вы бросаете монету много раз и считаете, какую долю бросков выпал орёл. Если монета честная, эта доля будет колебаться вокруг числа $0{,}5$ и тем точнее к нему прижиматься, чем больше бросков. Это число и называют вероятностью орла.
Зачем нам симуляции
Главная идея всего курса проста: любую вероятностную формулу можно проверить экспериментом. Компьютер умеет «бросать монету» миллионы раз за доли секунды. Если теория утверждает, что вероятность равна $p$, то доля успехов в большой серии обязана оказаться рядом с $p$. Когда эксперимент и формула совпадают, мы доверяем обоим. Когда расходятся — значит, где-то ошибка в рассуждении. Такой подход называется методом Монте-Карло: вместо аналитического вывода мы оцениваем величину, многократно разыгрывая случайность. Название пришло от знаменитого казино в Монако — азартные игры стали удобной метафорой управляемого хаоса, из которого рождается порядок. У метода есть и обратная сторона медали: симуляция не заменяет доказательство. Совпадение чисел делает гипотезу правдоподобной, но строго обосновать формулу всё равно нужно аналитически. Зато симуляция мгновенно ловит грубые ошибки: если ваша «теория» предсказывает $0{,}5$, а эксперимент уверенно показывает $0{,}33$, значит, теория неверна, и искать опечатку нужно ещё до того, как вы покажете её кому-то. Именно поэтому связка «формула рядом с симуляцией» — главный инструмент всего этого курса.
Классическое определение вероятности для равновозможных исходов выглядит так:
$$P(A)=\frac{m}{n},$$
где $n$ — общее число равновозможных исходов, а $m$ — число исходов, благоприятных событию $A$. Для честного кубика вероятность выпадения шестёрки равна $\frac{1}{6}$, потому что один благоприятный исход из шести. Проверим это экспериментом.
Первая симуляция
Сгенерируем много бросков кубика и посчитаем долю шестёрок. В Python за случайность отвечает модуль random: функция random.randint(1, 6) возвращает целое от 1 до 6 с равной вероятностью.
import random
random.seed(42)
n = 600000
sixes = sum(1 for _ in range(n) if random.randint(1, 6) == 6)
print("Доля шестёрок:", round(sixes / n, 4))
print("Теория 1/6: ", round(1/6, 4))Вывод:
Доля шестёрок: 0.1664 Теория 1/6: 0.1667
Экспериментальная доля $0{,}1664$ почти совпала с теоретическим $0{,}1667$. Разница появилась из-за конечного числа бросков — это нормально и предсказуемо.
Что такое seed
Строка random.seed(42) фиксирует «начальное зерно» генератора. Это делает результат воспроизводимым: при том же seed вы получите ровно те же числа. Уберёте seed — числа будут другими при каждом запуске, но всегда близкими к теории.
Как работает под капотом
Компьютер не умеет быть по-настоящему случайным: он детерминированная машина. Поэтому random использует псевдослучайный генератор — алгоритм (в Python это Mersenne Twister), который из зерна порождает длинную последовательность чисел, статистически неотличимую от случайной. Каждое число почти равномерно распределено на отрезке $[0; 1)$. Из такой равномерной «руды» строят всё остальное: чтобы получить кубик, отрезок делят на шесть равных частей; чтобы получить монету, проверяют, попало ли число в левую половину. Когда мы суммируем единицы за каждый успех и делим на число попыток, мы вычисляем именно частоту — оценку вероятности.
Частые ошибки
Первая ошибка — ждать точного совпадения с теорией при малом числе испытаний. На 10 бросках доля орлов запросто окажется $0{,}3$ или $0{,}7$; это не значит, что монета кривая. Вторая — «ошибка игрока»: вера, что после серии орлов «должна выпасть решка для баланса». Монета не помнит прошлое, каждый бросок независим. Третья — путать вероятность одного исхода с вероятностью хотя бы одного успеха в серии; это разные величины, и мы разберём их дальше.
Итог
- Вероятность — это доля успехов в длинной серии испытаний.
- Для равновозможных исходов $P(A)=\frac{m}{n}$.
- Метод Монте-Карло проверяет формулу, многократно разыгрывая случайность.
- На конечной серии есть отклонение от теории — и это ожидаемо.