Это публичный пример конспекта, собранный в Lectika из записи. Загрузите свою — получите такой же.
Загрузить запись →

Теория вероятностей: от жеребьёвки к моделям случайности

готов Лекция 126 мин Главы: 14 12.10.2026 03:45
скачать ↓
Конспект лекции · 02:06:39

Краткое содержание

Кратко

Лекция и семинар вводят базовые понятия теории вероятностей. Вероятность возникла из практических задач: делёж ставки в прерванной игре, обработка записей и наблюдений, планирование экспериментов. Затем рассматриваются аксиоматика, события, независимость, серии и дерево исходов. Семинар проверяет интуицию симуляциями монеты, кубиков и плейлиста. Главный вывод: результат симуляции верен лишь в выбранной модели, а её предположения нужно проверять отдельно.

Главные выводы

  • Вероятность связана с моделью опыта: сначала описываем исходы, события и предположения, затем считаем
  • Равновероятные исходы не дают равных частот в коротких сериях; большое число повторений уточняет оценку внутри модели
  • Редкое событие не доказывает нарушение модели; нужно сравнивать с числом возможностей, в которых оно могло произойти
  • Дополнение, пересечение и объединение считаются по правилам, а несовместные события складываются
  • Зависимость между исходами меняет пространство исходов и вероятности
  • Процедура выбора (сначала альбом, затем песня) меняет шансы, поэтому слово «случайно» требует уточнения
  • Псевдослучайные генераторы нужно выбирать по свойствам; seed обеспечивает воспроизводимость
  • Модель нужно проверять отдельно: симуляция повторяет описанный опыт, а не реальный мир

Шпаргалка

Базовые понятия

  • Исход — результат одного опыта; \(\Omega\) — все исходы.
  • Событие \(A\) — набор исходов, например \(A=\{O\}\).
  • Для конечного набора равновозможных исходов: \(P(A)=\frac{|A|}{|\Omega|}\).
  • Дополнение: \(P(A^c)=1-P(A)\).
  • Сложение: \(P(A\cup B)=P(A)+P(B)-P(A\cap B)\).
  • Независимые броски: вероятность последовательности — произведение вероятностей бросков.

Формулы повторов и серий

  • Ровно \(k\) орлов в \(n\) честных независимых бросках: \(\binom{n}{k}/2^n\).
  • Серия из 5 орлов в фиксированных местах: \((1/2)^5=\frac{1}{32}\).
  • Нет соседнего повтора в 20 выборах из 10: \((9/10)^{19}\); хотя бы один повтор: \(1-(9/10)^{19}\approx 0.865\).
  • Доля орлов: \(H/n=\frac{1}{2}+\frac{H-T}{2n}\); перевес \(H-T=2H-n\).

Частота, статистика, модель

  • Вероятность: модель известна, ищем данные.
  • Статистика: данные известны, ищем модель.
  • Частотный подход — доля успехов в длинной серии.
  • Байесовский подход — уверенность с учётом информации.
  • Одна частота не доказывает точное значение вероятности.

Задачи занятия

Задача Ответ
Ферма: счёт 2:1 до трёх побед, банк 100 75 и 25
10 орлов подряд \(1/1024\)
Ровно 1 орёл в 3 бросках \(3/8\)
Хотя бы 1 орёл в 3 бросках \(7/8\)
Кубик: \(A\) чётное, \(B\ge 4\) \(P(A\cap B)=2/6\), \(P(A\cup B)=4/6\)
2d6: сумма \(\ge 7\) / d12: \(\ge 7\) \(21/36\) / \(6/12\)
2d6: сумма \(\ge 10\) / d12: \(\ge 10\) \(6/36\) / \(3/12\)
Альбомы из 2 и 8 песен: отдельная песня A / отдельная песня B при равновероятном выборе альбома, затем песни внутри него \(1/4\) / \(1/16\)
Пять орлов где-нибудь в 100 бросках около 81%

Программа и воспроизводимость

  • rng = np.random.default_rng(SEED) — один генератор на эксперимент.
  • sliding_window_view(x, length, axis=1).all(axis=-1).any(axis=1) — поиск серии.
  • Переключения: np.count_nonzero(x[1:] != x[:-1]).
  • Seed фиксируют, чтобы результат повторялся у других.

Правила выбора модели

  • Сначала назвать процедуру, событие и предположения.
  • Порядок результатов важен.
  • Большое число повторов уточняет оценку внутри модели, но не исправляет модель.

Главы

Глава 1

Зачем считать шансы и как разделить ставку

00:00 — 09:57

Вероятность нужна для решений в условиях неопределённости. Классическая задача Паскаля и Ферма показывает, как честно разделить банк прерванной игры.

Вероятность нужна для двух практических задач: принимать решения, когда исход неизвестен, и понимать, насколько вероятен каждый исход. Обе задачи появились задолго до формальной теории.

Жребий, игры и первые записи

Жребий помогает принять решение, когда нет оснований выбрать один вариант из нескольких. Игры известны с древности. Игроку, однако, мало знать результат жребия. Ему нужно понять, выгодны ли условия игры.

Позже люди стали записывать данные: переписи городов, наблюдения астрономов. Накопив много записей, их начали сравнивать и задаваться вопросами: почему числа получились именно такими и какой механизм их породил. Так выросли две линии, из которых позже сложились вероятность и статистика.

Задача о прерванной игре

В 1654 году Паскаль и Ферма обсуждали задачу, которая стала классической. Игра идёт до трёх побед, каждый раунд честный и независимый от других. Игру прервали при счёте 2:1, банк равен 100. Как разделить банк?

Есть три разумных варианта:

  • Поровну, 50:50. Ставки возвращаются, игра признаётся несостоявшейся.
  • По счёту 2:1. Банк делится по числу выигранных раундов.
  • По шансам на победу. Оценивается, чем мог бы закончиться матч, и банк делится по этим шансам.

Из зала предложили вернуть каждому половину ставки, поскольку сыграна лишь часть партий. Мысль интересная, но доля сыгранных партий не отвечает на главный вопрос: кто ближе к победе. Кроме того, до трёх побед игра длится не больше пяти партий, а не шести, как прикидывали вначале.

Расчёт по шансам

Представим, что игра продолжается. Игроку А нужна ещё одна победа, игроку Б — две. Доиграем мысленно два раунда, чтобы все пути имели одинаковую длину. Получаем четыре равновозможных продолжения.

Четыре равновозможных продолжения игры и исходы
Четыре равновозможных продолжения игры и исходы

Если А выиграет первый из добавленных раундов, второй уже ничего не меняет. Мы всё равно его учитываем, чтобы сравнивать пути одинаковой длины.

Ожидание и делёж банка

Ожидаемая доля каждого игрока равна его шансу, умноженному на банк:

\[\text{доля}_A = P(\text{А}) \cdot 100 = 0{,}75 \cdot 100 = 75\]
\[\text{доля}_B = P(\text{Б}) \cdot 100 = 0{,}25 \cdot 100 = 25\]
Глава 2

Данные, измерения и планирование экспериментов

09:57 — 15:42

Граунт учился сравнивать записи, Гаусс и Лаплас объединяли неточные наблюдения, Фишер предложил случайное назначение условий в опытах.

Записи о смертности: сравнение вместо отдельного случая

В 1662 году Джон Граунт опубликовал анализ лондонских записей о смертности. Судьбу отдельного человека предсказать нельзя, но в больших группах видны устойчивые доли и изменения во времени. Для этого записи объединяют в таблицы и сравнивают между собой.

Объединение неточных наблюдений

В начале XIX века Лежандр и Гаусс разрабатывали методы объединения неточных наблюдений. Такие задачи возникали, например, в астрономии: разные наблюдения одного объекта дают разные числа, и из них нужно получить один ответ и оценку разброса.

Пять измерений одной длины

Одну и ту же длину измерили пять раз, см: 9.8; 9.9; 10.0; 10.1; 10.2.

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

Какое значение взять за ответ? Можно выбрать то, которому больше доверяем, или использовать среднее:

\[\bar{x} = \frac{1}{n}\sum_{i=1}^{n} x_i\]

Систематическая ошибка

Если линейка неточна, все измерения смещены в одну сторону. Усреднение уменьшает случайный разброс, но смещение сохраняется.

Урожайность: честное сравнение условий

Два условия, A и B, например два вида пшеницы или два варианта удобрения. На одном участке урожай выше. Причиной может быть условие, но также почва или погода. Если условие A всегда стоит на левой половине поля, а B на правой, эффект условия смешивается с различиями почвы.

Схема размещения условий А и В по участкам поля
Схема размещения условий А и В по участкам поля

Решение — перемешать условия по участкам. Каждый участок получает условие случайно.

Рандомизация по Фишеру

Работая в Ротамстеде, Рональд Фишер развивал планирование экспериментов. Случайное назначение условий помогает сделать группы сравнимыми: неизмеренные факторы, например свойства почвы, в среднем распределяются между группами одинаково. Это уменьшает риск спутать влияние условия с различиями участков.

Порядок действий:

  1. Делим поле на участки.
  2. Для каждого участка случайно выбираем A или B.
  3. Сравниваем средний урожай на участках A и на участках B.
Глава 3

Аксиомы вероятности и два взгляда на неё

15:42 — 25:21

Колмогоров описал вероятность через исходы, события и вероятности. Вероятность идёт от модели к данным, статистика наоборот. Частотный и байесовский взгляды дают разные ответы на вопрос, что значит «вероятность».

Три шага Колмогорова

В 1933 году Андрей Колмогоров изложил основания теории вероятностей в виде аксиом. Работа с любой задачей идёт в три шага:

  1. Назвать все возможные исходы опыта. Их множество обозначают \(\Omega\).
  2. Указать событие, то есть набор исходов, шанс которого нас интересует.
  3. Задать вероятности.
Опыт Исходы Событие
Монета О или Р выпал орёл
Два кубика пара \((a, b)\) сумма не меньше 10
Плейлист последовательность песен есть повтор подряд

Аксиомы задают правила для вероятностей. Для любого события \(A\) выполняется

\[P(A) \ge 0, \qquad P(\Omega) = 1,\]

а для несовместных событий \(A\) и \(B\), которые не могут произойти одновременно,

\[P(A \cup B) = P(A) + P(B).\]

Отсюда следует, например, что \(P(\bar A) = 1 - P(A)\): шанс противоположного события дополняет шанс события до единицы.

Вероятность и статистика: разные направления

Вероятность идёт от модели к данным. Правило известно: шанс орла равен \(1/2\). Спрашиваем, какие результаты дадут 20 бросков.

Статистика идёт наоборот. Результат уже есть: 14 орлов из 20. По нему пытаемся понять, какая модель монеты его породила.

Частота \(14/20 = 0.7\) ещё не доказывает, что шанс орла равен \(0.7\). При честной монете такой перекос тоже возможен из-за случайного разброса. Поэтому нужен способ учитывать этот разброс.

Монета под стаканом

Монету бросили и накрыли стаканом. Сторона уже определена физически, но её никто не видит.

Монета под стаканом: результат скрыт от наблюдателя
Монета под стаканом: результат скрыт от наблюдателя

Для тех, кто не заглядывал, ответ пока неизвестен, и шанс орла естественно считать \(1/2\). Если кто-то заглянул, монета не изменилась, но его информация стала другой.

Отсюда видно, что слово «случайно» может описывать два разных факта: механизм опыта, при котором никто не влияет на бросок, или наше незнание результата.

Два взгляда на вероятность

Частотный подход

Вероятность — это устойчивая доля, с которой событие происходит в длинной серии сопоставимых повторов. Если шанс орла равен \(1/2\), то при многих бросках доля орлов приближается к половине.

Байесовский подход

Вероятность выражает уверенность с учётом всей доступной информации. Новые сведения могут эту уверенность изменить. Тот, кто заглянул под стакан, оценивает шанс орла иначе, чем тот, кто не заглядывал.

Оба подхода требуют ясных предположений. Число \(1/2\) нужно объяснить правилами броска или тем, что нам известно о монете.

Что применяют на практике

В A/B-тестах чаще используют частотный подход. Он опирается на эмпирическое распределение: подсчитали, как клиенты ведут себя в разных вариантах, накопили данные и считаем, что они описывают клиентов за выбранный период.

Байесовский подход тоже применяется, но реже. Для байесовского расчёта нужно задать вероятностную модель и априорное распределение; подробное описание физики процесса и всех связей между признаками не обязательно. Построение модели может быть сложным как в крупных сервисах, так и в небольших компаниях.

Вероятность и статистика: исходная информация, вопрос, вывод Таблица

АспектВероятностьСтатистика
Исходная информацияМодель мира: вероятности заданыДанные: 14 орлов из 20 бросков
ВопросКакие данные даст модель?Какая модель породила данные?
Направление выводаОт модели к даннымОт данных к модели
ПримерСколько орлов будет в 20 бросках?Что говорят 14 орлов о монете?
Глава 4

Серии, строки и дерево исходов

25:21 — 34:22

Редкость серии не доказывает нечестности монеты. Дерево исходов и дополнение позволяют считать вероятности событий, например «хотя бы один орёл».

Десять орлов подряд

В пьесе Тома Стоппарда «Розенкранц и Гильденстерн мертвы» монета снова и снова падает орлом, а герои ищут объяснение странной серии. Оценим, насколько такая серия вероятна. Пусть заранее выбраны 10 честных независимых бросков (число 10 взято для примера). Шанс, что все они окажутся орлами:

\[P = \left(\tfrac{1}{2}\right)^{10} = \frac{1}{1024}\]

Каждый бросок даёт орла с шансом \(\frac{1}{2}\). Броски независимы, поэтому шансы перемножаются.

Редкое событие ещё не доказывает подвоха

Шанс \(\frac{1}{1024}\) мал, но не равен нулю, значит, серия возможна. Десять орлов подряд не доказывают, что монета нечестная: честная монета тоже иногда даёт такие серии. Чтобы судить о самой монете, нужно больше бросков. По одной серии о ней можно сказать немного.

Случайность как непредсказуемость

Мы называем случайным то, что нельзя предсказать. Заметив паттерн, мы считаем, что есть правило, и делаем вывод, что предположение о честной монете нарушено. Но любая конкретная последовательность из десяти бросков при честной монете имеет тот же шанс \(\frac{1}{1024}\), что и серия орлов. Паттерн говорит о нашем восприятии, а не о механизме опыта.

Две строки по 24 броска

В строке A орлы и решки чередуются без длинных серий. Строка B начинается с пяти орлов подряд. Большинство участников выбирает A как «более случайную», а B считает подозрительной. Однако обе строки могли получиться честной монетой: каждая конкретная строка из 24 бросков имеет одинаковый шанс.

Событие и все исходы

Опыт в этом разделе — один бросок. Все возможные результаты образуют пространство исходов:

\[\Omega = \{O, P\}\]

Строчной буквой \(\omega\) обозначают результат, который получился. Событие — подмножество исходов Ω, которое нас интересует. Событие \(A = \{O\}\) означает «выпал орёл».

Три броска: дерево исходов

При нескольких бросках исходов становится больше. Каждая развилка дерева добавляет орла или решку:

Дерево исходов для трёх бросков монеты
Дерево исходов для трёх бросков монеты

Три броска дают восемь путей: OOO, OOP, OPO, OPP, POO, POP, PPO, PPP. Путь OPO означает: сначала орёл, затем решка, затем орёл. При честных независимых бросках его шанс равен \(\left(\frac{1}{2}\right)^3 = \frac{1}{8}\). Все восемь путей равновозможны, поэтому у каждого шанс \(\frac{1}{8}\).

Ровно один орёл: 3/8

Чтобы найти вероятность события, выделим подходящие пути и разделим их число на общее число путей:

  1. Подходят пути с одним орлом: OPP, POP, PPO.
  2. Всего путей восемь.
  3. Положение орла различается, но условие выполнено во всех трёх случаях.
\[P(\text{ровно один орёл}) = \frac{3}{8}\]

Хотя бы один орёл: дополнение

Перечислять семь путей с орлом можно, но проще найти единственный путь без орла: PPP. Событие «хотя бы один орёл» — дополнение к событию «ни одного орла»:

\[P(\text{хотя бы один орёл}) = 1 - P(\text{PPP}) = 1 - \frac{1}{8} = \frac{7}{8}\]
Глава 5

Одинаковые шансы, разные впечатления

34:22 — 45:15

Равновероятные строки кажутся разными, потому что мы видим паттерны. Окна серий пересекаются, поэтому их шансы нельзя просто складывать.

Шесть орлов и смешанная строка

Сравним две строки из шести бросков честной монеты: OOOOOO и OPOPPO. Если строка выбрана заранее, шанс каждой одинаков: \((1/2)^6 = 1/64\). Для конкретной строки нужны шесть определённых результатов в определённом порядке.

Разница появляется, когда вопрос касается не одной строки, а целого класса строк:

Событие Строк в событии Шанс
Шесть орлов подряд 1 из 64 \(1/64\)
Любая смешанная строка 62 из 64 \(62/64\)

Отдельная строка из шести орлов так же редка, как любая другая конкретная строка. Но смешанных строк почти все, поэтому «какая-то смешанная строка» почти наверняка выпадет.

Почему мы замечаем закономерность

Мы почти автоматически выделяем паттерны. Строку OOOOOO легко описать одним правилом: «всегда орёл». Смешанную строку приходится запоминать поштучно, поэтому она кажется нам «более случайной», хотя шансы совпадают.

Здесь же проявляется сжатие. Архиваторы (zip, WinRAR) ищут избыточность: если последовательность описывается короткой программой, в файле много повторов, и его можно уменьшить. Человек поступает похоже: запоминает правило, а не каждое значение. Модели машинного обучения извлекают повторяющиеся закономерности, и простое предсказание следующего токена в языковых моделях даёт сильные результаты именно потому, что заставляет находить суть.

Случайность как непредсказуемость

Случайность здесь понимается как мера непредсказуемости. Строку, которую можно предсказать или описать коротким правилом, легко запомнить, и она кажется неслучайной. Непредсказуемую строку запомнить труднее, и мы называем её случайной.

Пять орлов: место задано заранее или нет

Рассмотрим два события:

  • A: первые пять бросков — орлы. Место назвали заранее, поэтому шанс равен \((1/2)^5 = 1/32 \approx 0{,}031\).
  • B: среди ста бросков где-нибудь есть серия из пяти орлов подряд.

Событие B включает случаи, когда серия стоит в любом месте. Окно из пяти бросков может начинаться с 1-го по 96-й бросок, то есть окон \(100 - 5 + 1 = 96\).

Одна длинная серия попадает сразу в два окна
Одна длинная серия попадает сразу в два окна

Если сложить шансы окон, получится \(96 \cdot \frac{1}{32} = 3\), что больше единицы, а вероятность не может быть больше единицы. Окна пересекаются: в шести орлах подряд есть и окно 1–5, и окно 2–6, но вся история одна. Поэтому в каждой истории серию отмечают один раз: встретилась она или нет.

Удачный «предсказатель»

Представим, что нужно угадать все исходы турнира на выбывание. Один аккаунт почти наверняка ошибётся. Но если завести много аккаунтов и перебрать разные варианты, то какой-то из них угадает всё. Со стороны это выглядит как маловероятное предсказание, хотя результат получен процедурой, а не удачей одного прогноза.

После пяти орлов

Серия из пяти орлов не меняет монету. Следующий бросок по-прежнему даёт решку с шансом \(1/2\): монета не «копит» долг и не обязана исправлять счёт. Доля орлов может приближаться к половине, но не из-за серии решек, а за счёт большого числа бросков.

Глава 6

Независимость, дополнение, пересечение, объединение

45:15 — 55:03

Для честного кубика шансы граней одинаковы. Пересечение, объединение и дополнение считаются по обычным правилам. Зависимость кубиков меняет пространство исходов.

Честный кубик: шесть равных шансов

У честного шестигранного кубика каждая грань выпадает с вероятностью \(\frac{1}{6}\). Исход опыта здесь одна грань, и все шесть исходов равновозможны.

Событие «выпало чётное» объединяет три исхода: 2, 4 и 6. Их шансы складываются:

\[P(\text{чётное}) = \frac{1}{6} + \frac{1}{6} + \frac{1}{6} = \frac{3}{6} = \frac{1}{2}\]

Три правила, на которых держится расчёт

Любая модель опыта подчиняется трём правилам:

  1. Вероятность события неотрицательна: \(P(A) \ge 0\).
  2. Вероятность всего пространства исходов равна 1: \(P(\Omega)=1\).
  3. Для несовместных событий вероятности складываются. Несовместные события не могут произойти вместе.

Один бросок не даёт одновременно двойку и четвёрку, поэтому

\[P(2 \text{ или } 4) = \frac{1}{6} + \frac{1}{6} = \frac{2}{6}\]

Дополнение: шанс того, что событие не наступит

Дополнение события \(A\) — все исходы, которые в \(A\) не входят. Его обозначают \(A^c\). Событие \(A\) и его дополнение не пересекаются и вместе покрывают все исходы, поэтому их вероятности в сумме дают 1:

\[P(A^c) = 1 - P(A)\]

Пример: шанс не выбросить шестёрку равен \(1 - \frac{1}{6} = \frac{5}{6}\). Считать так проще, чем перечислять пять граней, и тот же приём работал для «хотя бы один орёл» в предыдущей части.

Пересечение: выполнены оба условия

Пусть \(A\) — выпало чётное, а \(B\) — выпало не меньше четырёх. Тогда

\[A = \{2, 4, 6\}, \qquad B = \{4, 5, 6\}\]

Пересечение \(A \cap B\) — исходы, которые подходят под оба условия сразу. Это грани 4 и 6:

\[A \cap B = \{4, 6\}, \qquad P(A \cap B) = \frac{2}{6} = \frac{1}{3}\]

Исход 2 подходит только под \(A\), а исход 5 — только под \(B\). В пересечение они не попадают.

Объединение: выполнено хотя бы одно условие

Объединение \(A \cup B\) — выполнено хотя бы одно из условий, включая случай, когда выполнены оба. Исходы 4 и 6 входят и в \(A\), и в \(B\). Если просто сложить \(P(A)\) и \(P(B)\), они учтутся дважды, поэтому одно пересечение вычитают:

\[P(A \cup B) = P(A) + P(B) - P(A \cap B)\]

Подставим значения:

\[P(A \cup B) = \frac{3}{6} + \frac{3}{6} - \frac{2}{6} = \frac{4}{6}\]

Проверка перечислением: \(A \cup B = \{2, 4, 5, 6\}\), четыре исхода из шести.

Неравномерный кубик: вероятности как веса

Пусть шестёрка выпадает с вероятностью \(\frac{1}{2}\), а каждая из остальных граней с вероятностью \(\frac{1}{10}\). Проверка: \(5 \cdot \frac{1}{10} + \frac{1}{2} = 1\).

Формула \(P(A) = \frac{|A|}{|\Omega|}\) здесь не годится: исходы не равновозможны, и подсчёт граней ничего не даст. Вероятности складываются как веса:

\[P(\text{чётное}) = \frac{1}{10} + \frac{1}{10} + \frac{1}{2} = \frac{7}{10}\]

Правило «число благоприятных на число всех» работает только для конечных равновозможных исходов.

Два кубика: 36 равновозможных пар

Опыт с двумя кубиками даёт упорядоченную пару \((a, b)\): \(a\) — результат первого кубика, \(b\) — второго. Порядок важен: пара \((4, 6)\) отличается от \((6, 4)\). Всего пар \(6 \cdot 6 = 36\), и при честных независимых кубиках каждая имеет шанс \(\frac{1}{36}\).

Таблица сумм двух кубиков по всем 36 парам
Таблица сумм двух кубиков по всем 36 парам

Сумма 7 получается из шести пар: \((1,6), (2,5), (3,4), (4,3), (5,2), (6,1)\). Поэтому

\[P(\text{сумма} = 7) = \frac{6}{36} = \frac{1}{6}\]

Разные пары дают одинаковую сумму. Сама сумма — числовая характеристика исхода. Позже такую величину назовём случайной величиной.

Зависимость меняет пространство исходов

Теперь второй кубик выставляют на то же число, что выпало на первом. Каждый кубик по отдельности остаётся честным. Но пар становится только шесть:

\[(1,1),\ (2,2),\ (3,3),\ (4,4),\ (5,5),\ (6,6)\]

Сумма 7 исчезает, все суммы чётные: \(a + a = 2a\). Здесь не изменилась честность граней, а изменилась связь результатов. Поэтому, прежде чем считать, нужно знать, зависят ли результаты друг от друга, потому что от этого зависит и список возможных исходов.

d12 или 2d6: какой кубик выбрать

Сравним два способа получить число от 1 до 12. d12 — один двенадцатигранный кубик: каждое число выпадает с шансом \(\frac{1}{12}\). 2d6 — сумма двух шестигранников, она распределена «куполом» с пиком при 7.

Сравнение распределений результатов d12 и 2d6
Сравнение распределений результатов d12 и 2d6

Выбор зависит от порога успеха:

Условие успеха d12 2d6 Выгоднее
результат не меньше 7 \(\frac{6}{12} = 0.5\) \(\frac{21}{36} \approx 0.58\) 2d6
результат не меньше 10 \(\frac{3}{12} = 0.25\) \(\frac{6}{36} \approx 0.17\) d12

Для 2d6 при пороге 7 успешны 21 пара. Это проще посчитать дополнением: пар с суммой не больше 6 будет 15, а \(36 - 15 = 21\). При пороге 10 успешны шесть пар: \((4,6), (5,5), (6,4), (5,6), (6,5), (6,6)\).

Два кубика чаще дают результат из середины, потому что к ней ведёт больше пар. При низком пороге это помогает 2d6, при высоком выгоднее плоский d12. Одинаковый максимум, 12, не означает одинаковую сложность испытания.

Глава 7

Плейлист, альбомы и генераторы случайных чисел

55:03 — 01:06:21

Результат зависит от процедуры выбора: выбор альбома, затем песни, даёт другие шансы, чем выбор из общей библиотеки. Псевдослучайные генераторы выбирают по изученным свойствам.

Три правила перемешивания

Плейлист можно собрать тремя способами. Все они используют случайность, но дают разный опыт прослушивания.

Правило Как выбирается трек Что может произойти
Любая песня На каждом шаге любой трек из каталога, все равновероятны Любимый трек может прозвучать дважды подряд
Одна перестановка Весь каталог перемешивается и проигрывается один раз Повторов нет: каждая песня звучит не более одного раза
Без соседнего повтора Выбор случаен, но следующий трек не совпадает с предыдущим Подряд повтора нет, через несколько песен он возможен

20 песен и 19 переходов

Пусть каталог состоит из 10 песен, а плейлист из 20 выборов выполняется независимо, с возвращением. Нужно найти шанс хотя бы одного повтора рядом.

Удобнее считать противоположное событие: соседних повторов нет.

  • Первый выбор: любая из 10 песен, шанс \(10/10\).
  • Каждый следующий выбор должен отличаться от предыдущей песни: 9 подходящих вариантов из 10, шанс \(9/10\).
  • Между 20 позициями 19 переходов.

Шанс, что соседних повторов нет, равен \((9/10)^{19}\). Тогда шанс хотя бы одного повтора рядом:

\[P = 1 - \left(\tfrac{9}{10}\right)^{19} \approx 0.865\]

Альбомы: процедура меняет шансы

Пусть есть альбом A из двух песен (A1, A2) и альбом B из восьми песен (B1–B8). Всего 10 разных треков. Сравним два способа выбора:

  1. Выбрать альбом с шансами \(1/2\) и \(1/2\), затем песню внутри него с равными шансами.
  2. Выбрать сразу одну из 10 песен, не глядя на альбомы.
Альбом A из двух песен и альбом B из восьми песен
Альбом A из двух песен и альбом B из восьми песен

Для первого способа шанс каждой песни считается как произведение шансов по шагам:

  • песня A1: \(\frac{1}{2}\times\frac{1}{2}=\frac{1}{4}\);
  • песня B1: \(\frac{1}{2}\times\frac{1}{8}=\frac{1}{16}\).

Для второго способа каждая песня получает \(\frac{1}{10}\).

Проверка: \(2\cdot\frac{1}{4}+8\cdot\frac{1}{16}=1\). Все шансы в сумме дают единицу.

Почему так: альбом выбирается с одинаковым шансом независимо от размера. На короткий альбом приходится тот же вес, что на длинный, поэтому каждая его песня получает больший шанс. Таким образом, при первом способе треки короткого альбома звучат заметно чаще.

Шансы отдельных песен при выборе альбома и песни и при выборе из общей библиотеки
Шансы отдельных песен при выборе альбома и песни и при выборе из общей библиотеки

Кнут: от жеребьёвки к алгоритму

Сначала случайность получали жеребьёвкой: бросали монету, тянули камешки или палочки разной длины. Затем появились готовые таблицы случайных цифр. С развитием компьютеров возникли две практические потребности:

  • нужны длинные последовательности чисел для симуляций;
  • расчёт нужно иметь возможность точно повторить, например, чтобы проверить программу.

Из этого следует задача: получить нужные свойства случайности по воспроизводимому правилу. Приставка «псевдо» здесь важна. Настоящую случайность алгоритм не производит, он выдаёт последовательность, которая ведёт себя как случайная. Подробно этот путь описан Кнутом в «Искусстве программирования» (том 2, §3.1).

Генератор, который застрял

Кнут построил алгоритм K из множества запутанных преобразований и ожидал очень хорошую последовательность. Сложность сама по себе качества не гарантировала. При первом запуске алгоритм быстро пришёл к числу 6065038420 и стал повторять его:

\[\dots \to 6065038420 \to 6065038420 \to \dots\]

Алгоритм попал в неподвижную точку: из этого состояния он уже не выходит.

Из этого примера следуют несколько выводов:

  • По виду результатов качество генератора не определить. Последовательность может выглядеть случайной, а при отдельных начальных значениях зациклиться или выдать строгий паттерн.
  • Аналитически разобрать сложный алгоритм тоже трудно.
  • Поэтому генераторы строят из операций, у которых изучены свойства и границы их поведения, а затем комбинируют.
Глава 8

Порядок результатов, seed и выбор модели

01:06:21 — 01:09:44

Одинаковая доля орлов не описывает порядок бросков. Для воспроизводимых опытов фиксируют seed. Ошибочную модель не исправит никакое число повторений.

Порядок результатов несёт информацию

Возьмём две строки по двенадцать бросков, в каждой шесть орлов и шесть решек. Если смотреть только на долю орлов, строки неразличимы.

Одинаковая доля орлов, разный порядок результатов
Одинаковая доля орлов, разный порядок результатов

Верхняя строка строго чередуется, и её продолжение легко угадать. В нижней порядок нерегулярен. Доля одинаковая, но если игнорировать порядок, теряется часть информации.

Seed: как повторить опыт

Генератор случайных чисел — алгоритм, а не настоящая случайность. Его начальное состояние задаёт seed (зерно). Один seed и один алгоритм дают одну и ту же последовательность.

import numpy as np

SEED = 12345
rng = np.random.default_rng(SEED)   # создаём генератор один раз
flips = rng.random(10) < .5         # все броски берём из него

Миллион опытов не исправит неверное правило

Симуляция повторяет опыт, который вы описали. Если описание неверно, тысячи повторов лишь точнее оценят неверную модель. Пусть второй кубик копирует первый: тогда сумма равна \(2x\) и всегда чётна. Сумма 7 не появится ни в одном повторе.

Большое число повторов уточняет вероятность внутри модели. Саму модель нужно проверять отдельно.

Порядок действий перед расчётом

Для нового вопроса назовите три вещи: процедуру (что делаем), событие (что считаем успехом) и предположения (честность, независимость, выбор с возвращением или без). Только после этого считайте формулу или запускайте симуляцию.

Глава 9

Семинар: цели и настройка среды

01:21:05 — 01:23:19

Семинар дает базовую интуицию и умение проводить симуляции, которые нужны в курсах математической статистики и A/B-тестам. Среда фиксирована seed-ом, чтобы результаты воспроизводились.

Цель семинара — выработать базовую интуицию и умение проводить симуляции, которые понадобятся в математической статистике и A/B-тестах.

Ход занятия

Сначала разбираем монету, затем кубики и музыкальный плейлист. В каждом блоке можно менять параметры: число бросков, вероятность орла, порог суммы, длину серии. Сравнивайте свою догадку с результатом и возвращайтесь к задачам лекции.

Фиксируем среду

SEED = 12345
rng = np.random.default_rng(SEED)

SEED задаёт начальное состояние генератора, поэтому при одинаковом значении результаты совпадают у всех. Генератор создаётся один раз, иначе будет повторяться первый результат. Остальной служебный код подключает NumPy и matplotlib и задаёт оформление рисунков. Успешный запуск выводит строку Среда готова. NumPy 2.1.3.

Вспомогательные функции

  • tape(values, ax, title, highlights) рисует ряд клеток O и P; highlights обводит серии.
  • has_run(trials, length) проверяет для каждой истории, есть ли серия из length орлов подряд. Орёл здесь True.
  • compare(labels, estimates, exact) сравнивает симуляцию с точными значениями.
  • dice_grid(mask, title) рисует сетку 6×6 пар кубиков и выделяет нужные клетки.
from numpy.lib.stride_tricks import sliding_window_view

def has_run(trials, length=5):
    x = np.asarray(trials, dtype=bool)
    if x.ndim != 2 or length < 1:
        raise ValueError('Нужен массив историй и положительная длина серии')
    if x.shape[1] < length:
        return np.zeros(x.shape[0], dtype=bool)
    return sliding_window_view(x, length, axis=1).all(axis=-1).any(axis=1)

trials = rng.random((1000, 30)) < .5
print(has_run(trials, 5).mean())

Литература

  • «Что не так? Три парадокса теории вероятностей».
  • «Важнейшая модель теории вероятностей».
  • Кнут, «Искусство программирования», том 2, §3.1.
Глава 10

Строка человека против генератора и случайное блуждание

01:23:19 — 01:33:43

Признак «число переключений» показывает, насколько строка типична для честной монеты. Случайное блуждание с орлом +1 и решкой −1 показывает разницу между долей орлов и перевесом.

Переключения и серии

Переключение — это пара соседних бросков с разными результатами: орёл сменился решкой или решка орлом. Серия — подряд идущие одинаковые результаты.

В строке ООРРРО два переключения: между вторым и третьим бросками и между пятым и шестым. Серии здесь ОО, РРР и О.

Для честной монеты следующий бросок отличается от предыдущего с шансом 1/2. В строке из 24 бросков 23 соседние пары, поэтому в среднем ожидается \(23 \cdot \frac{1}{2} = 11.5\) переключения.

Признак выбираем до просмотра

Строку, записанную вручную из 24 бросков, сравнивают с 5000 случайными строками той же длины. Для каждой строки считают число переключений:

human_text = 'OPOOPOPOPOPOOPOPOPOPOP'
human = np.array(list(human_text)) == 'O'
trials = rng.random((5000, len(human))) < .5
switch_counts = (trials[:, 1:] != trials[:, :-1]).sum(axis=1)

Выражение trials[:, 1:] != trials[:, :-1] сравнивает каждый бросок с предыдущим.

У строки «человека» 19 переключений, у генератора — 10 (при этом в его строке самая длинная серия 6). Гистограмма для 5000 строк собрана около 11–12 переключений, а значение 19 стоит на её правом краю.

Строка человека и генератор на фоне 5000 случайных строк по числу переключений
Строка человека и генератор на фоне 5000 случайных строк по числу переключений

Признак нужно выбрать до просмотра результата. Если перебрать много признаков и оставить тот, где строка выделилась, «необычность» найдётся почти у любой строки.

Подгонка под типичное число переключений

Чтобы проверить этот вывод, строку меняли. Сначала получили строку с 9 переключениями и самой длинной серией 4, а у генератора в той же проверке было 11 переключений и серия 5. Затем подобрали строку с 12 переключениями, как у генератора. По самой длинной серии она всё равно отличается: 4 против 5.

Вывод такой: подгоняя строку под один признак, можно добиться, чтобы она выглядела типичной по этому признаку. Но один признак ничего не доказывает. Перед сравнением назовите признак и объясните, почему он важен для вопроса.

Случайное блуждание

Пусть орёл означает шаг вправо на +1, а решка — шаг влево на −1. Накопленная сумма шагов называется случайным блужданием. Её значение после \(n\) бросков равно \(H - T\), где \(H\) — число орлов, \(T\) — число решек. Эту величину называют перевесом.

n = 10000
p = .5
flips = rng.random(n) < p
steps = np.arange(1, n+1)
count = np.cumsum(flips)
frequency = count / steps
lead = 2*count - steps

Здесь count — число орлов к каждому моменту, frequency — доля орлов, lead — перевес. Поскольку \(T = n - H\), получаем \(H - T = 2H - n\).

Доля и перевес

Доля орлов равна \(H/n\). Подставим \(H = \frac{(H-T) + n}{2}\) и получим точную связь:

\[\frac{H}{n} = \frac{1}{2} + \frac{H-T}{2n}\]

Доля отличается от 1/2 на перевес, делённый на \(2n\). Значит, доля может быть близка к 1/2, а перевес при этом оставаться большим: отклонение доли равно перевесу, делённому на \(2n\), и перевес не обязан уменьшаться при увеличении \(n\).

Честная монета, 10 000 бросков:

Доля орлов и перевес орлов над решками за 10 000 бросков
Доля орлов и перевес орлов над решками за 10 000 бросков

Доля 0.5072, перевес +144. Проверка по формуле: \(\frac{144}{2 \cdot 10000} = 0.0072\), и \(0.5 + 0.0072 = 0.5072\).

Короткие истории

Для 100 бросков получили долю 0.53 и перевес +6. В начале истории доля заметно уходила от 1/2, и лишь потом стала держаться около него. На 10 бросках доля может быть 0.7 у совершенно честной монеты (7 орлов из 10): перевес при этом всего +4.

Глава 11

Казино, перевес и распределение числа орлов

01:33:43 — 01:41:40

Небольшое преимущество шанса на длинной дистанции даёт устойчивый перевес. Распределение числа орлов в 20 бросках проверяется повторами эксперимента и точным подсчётом.

Случайное блуждание в игре

Пусть орёл приносит игроку +1, а решка −1. Тогда перевес после \(n\) бросков равен \(\text{орлы} - \text{решки} = 2 \cdot \text{орлы} - n\). Каждый бросок сдвигает точку вправо или влево, и такая траектория называется случайным блужданием.

Доля орлов и перевес связаны точно:

\[\frac{\text{орлы}}{n} = \frac{1}{2} + \frac{\text{перевес}}{2n}\]

Поэтому доля может приблизиться к \(0.5\), а перевес при этом остаться большим. Это разные величины, и отвечают они на разные вопросы.

flips = rng.random(n) < p
count = np.cumsum(flips)
frequency = count / steps
lead = 2*count - steps

Честная игра: доля стабилизируется, перевес колеблется

При \(p = 0.5\) на 100 000 бросках получили долю 0.5005 и перевес +94. Доля орлов сходится к \(0.5\), а перевес на длинной дистанции не прилипает к нулю: на графике он колеблется примерно от −100 до +250.

Небольшое преимущество на длинной дистанции

При \(p = 0.55\) орёл выигрывает у решки уже в самих правилах. На 100 000 бросках доля составила 0.5484, перевес +9680. Перевес растёт почти линейно, а доля уверенно держится около \(0.55\).

Доля орлов и перевес при шансе орла 0.55
Доля орлов и перевес при шансе орла 0.55

При \(p = 0.52\) получили долю 0.5173 и перевес +3464 за те же 100 000 бросков. Преимущество меньше, но на длинной дистанции оно тоже накапливается.

В коротких сессиях такое преимущество почти не заметно, и результат легко принять за случайность.

Как это работает в азартных играх

Казино получает небольшое преимущество в каждой ставке. В одном вечере оно почти незаметно, но при большом числе игр и игроков оно накапливается. Поэтому долгосрочный итог определяется не удачей отдельной сессии, а шансом.

Отдельно стоят так называемые dark patterns: механики, которые вызывают зависимость и заставляют играть чаще. Они увеличивают число сессий, а значит, и число бросков, на которых работает преимущество.

Распределение числа орлов в 20 бросках

Повторим эксперимент «20 бросков» 10 000 раз. По горизонтали отложим число орлов в одной истории, по вертикали — долю таких историй. Это другой график, чем накопленная доля орлов.

from math import comb

n = 20
M = 10_000
k = np.arange(n+1)
counts = (rng.random((M,n)) < .5).sum(axis=1)
observed = np.bincount(counts, minlength=n+1)/M
exact = np.array([comb(n,int(j))/2**n for j in k])

Ровно 10 орлов: эксперимент даёт 0.178, точный подсчёт — 0.176.

Доля историй по числу орлов в 20 бросках: повторы и точный подсчёт
Доля историй по числу орлов в 20 бросках: повторы и точный подсчёт

Точный подсчёт опирается на число способов выбрать позиции орлов среди 20 бросков, делённое на число всех строк:

\[P(\text{ровно } k \text{ орлов}) = \frac{\binom{n}{k}}{2^n}, \qquad P(\text{ровно } 10) = \frac{\binom{20}{10}}{2^{20}} = \frac{184\,756}{1\,048\,576} \approx 0.176\]

При меньшем числе повторов расхождение между опытом и точным значением становится заметнее, поэтому для проверки формулы нужно много повторов.

Глава 12

Серии, совпадения и проверка задач о монете

01:41:40 — 01:48:39

Серия длины 5 ищется по окнам, а шанс серии растёт с числом бросков и с p. Проверка задач показывает, что шансы согласуются с расчётом.

Серия длины 5 в 60 бросках

Серия — это несколько одинаковых результатов подряд. Чтобы найти серию из пяти орлов в истории из 60 бросков, проверяем все окна длины 5. Ключевая строка:

sliding_window_view(x, length, axis=1).all(axis=-1).any(axis=1)

Окно сдвигается по строке, и для каждого положения проверяется, выпали ли пять орлов подряд. Если хотя бы одно окно подошло, серия есть.

Броски монеты 1–60 с выделенными сериями орлов
Броски монеты 1–60 с выделенными сериями орлов

В одной истории серия из пяти орлов нашлась, в другой при длине 7 её не было, а в следующем запуске семерка появилась. Ответ «есть или нет» относится к конкретной истории. Перезапуск даёт новую историю и новый ответ.

Окна и их шансы

В строке из 100 бросков окон длины 5 будет \(100-5+1=96\). Соседние окна пересекаются: серия из шести орлов попадает одновременно в окна 1–5 и 2–6. Поэтому шансы окон нельзя складывать. Сумма \(96 \cdot \frac{1}{32} = 3\) больше единицы, но вероятность не может быть больше 1: одна история учитывается в нескольких окнах.

Первые пять или где-нибудь

Сравним два события для 100 бросков:

Событие Шанс
Первые пять бросков — орлы \(\frac{1}{32} \approx 0.031\)
Хотя бы одна серия из пяти орлов где-нибудь около 0.81

Первое событие фиксирует место заранее. Второе допускает 96 позиций, поэтому его шанс заметно выше.

M, n, length = 30_000, 100, 5
trials = rng.random((M,n)) < .5
first = trials[:,:length].all(axis=1)
anywhere = has_run(trials,length)
Одна позиция против всей истории
Одна позиция против всей истории

Симуляция на 30 000 историях даёт 0.031 и около 0.81, что совпадает с расчётом.

Что меняет длина истории и шанс орла

  • В 1000 бросках серия из пяти орлов почти наверняка есть: доля историй близка к 1.
  • Десять орлов подряд в фиксированных первых десяти бросках имеют шанс \(\left(\frac{1}{2}\right)^{10} = \frac{1}{1024}\). Где-нибудь в 1000 бросках такая серия встречается примерно в 38% историй.
  • Пусть \(p\) — шанс орла. При \(p = 0.7\) доля историй с серией из пяти орлов уже около 1 при 100 бросках. При \(p = 0.3\) рост идёт медленнее.

Больше бросков и больше вероятность орла дают больше мест для совпадения. Небольшие колебания графика — случайный разброс новых историй.

Проверка задач о монете

Задача 1. После пяти орлов подряд решка «нужнее»? Бросок независим от прошлых, поэтому шанс решки остаётся \(\frac{1}{2}\). Симуляция: среди историй, начинающихся с пяти орлов (около 3000 из 100 000), следующая решка выпала в 0.512 случаев.

x = rng.random((100_000,6)) < .5
selected = x[:,:5].all(axis=1)
next_tail = (~x[selected,5]).mean()

Задача 2. В трёх бросках что вероятнее: ровно один орёл или три орла?

  • Ровно один орёл: OPP, POP, PPO — три из восьми равновозможных строк, шанс \(\frac{3}{8} = 0.375\).
  • Три орла: только OOO, шанс \(\frac{1}{8} = 0.125\).

Симуляция дала 0.375 и 0.124. Результаты близки к расчёту для заданной модели честной монеты с независимыми бросками; это не проверяет честность реальной монеты.

Глава 13

Кубики: частоты, сетка пар и суммы

01:48:39 — 01:58:54

Короткие серии бросков дают заметно разные частоты граней, хотя шансы равны. Сетка пар и симуляции проверяют расчёт для суммы двух кубиков и выбора кубика.

Кубик честный, если до броска все шесть граней равновозможны: шанс каждой равен \(\frac{1}{6}\). Это утверждение о модели, а не обещание ровных частот в конкретной серии бросков.

Честность и частоты

Проверим на опыте: бросим честный кубик 60 раз, затем 6000 раз, и сравним доли граней с \(\frac{1}{6}\).

for n in [60, 6000]:
    values = rng.integers(1,7,n)
    frequencies = np.bincount(values,minlength=7)[1:]/n
    # ... построение столбцов frequencies и линии 1/6

При 60 бросках столбцы заметно различаются: грань 2 выпала с долей около 0.23, грань 1 — около 0.10. При 6000 бросках все шесть столбцов почти совпадают с линией \(\frac{1}{6}\).

Частоты граней кубика после 60 и 6000 бросков
Частоты граней кубика после 60 и 6000 бросков

Короткая серия показывает лишь малую часть возможных исходов, поэтому разброс ещё не доказывает нечестность кубика. Чтобы оценить такой разброс, нужна модель: сначала задаём шансы, затем смотрим, насколько типичны наблюдаемые частоты.

Сетка пар

Опыт с двумя кубиками описывается упорядоченной парой \((a, b)\): первый и второй кубики различимы. Для честных независимых кубиков всего пар \(6 \cdot 6 = 36\), и каждая равновероятна: \(\frac{1}{36}\). Удобно расположить их в таблице 6×6: строка задаёт результат первого кубика, столбец — второго, в клетке стоит сумма.

Событие «сумма не меньше порога» выделяем булевой маской:

threshold = 10
first_die, second_die = np.meshgrid(np.arange(1,7), np.arange(1,7), indexing='ij')
sum_grid = first_die + second_die
event = sum_grid >= threshold
print('Точная вероятность:', event.mean())

np.meshgrid создаёт две матрицы: в первой каждая клетка хранит результат первого кубика, во второй — второго. Их сумма даёт сумму каждой пары, а event.mean() — долю выделенных клеток, то есть вероятность.

d12 или 2d6

Сравним два варианта: один двенадцатигранный кубик d12 и сумму двух шестигранных 2d6. Оба дают значения от 1 до 12 (у 2d6 единица невозможна), но распределены по-разному: d12 — равномерно, у 2d6 пик приходится на 7.

Порог d12 2d6 Выгоднее
не меньше 7 6/12 = 50% 21/36 ≈ 58.3% 2d6
не меньше 10 3/12 = 25% 6/36 ≈ 16.7% d12
не меньше 12 1/12 ≈ 8.3% 1/36 ≈ 2.8% d12

Симуляция подтверждает таблицу. При пороге 10 d12 дал 25.35% против точных 25.00%, 2d6 — 16.56% против 16.67%. При пороге 7 d12 дал 49.79% против 50.00%, 2d6 — 58.04% против 58.33%.

Вероятности результатов и шанс успеха при пороге 10
Вероятности результатов и шанс успеха при пороге 10

Причина в числе пар: к сумме 7 ведут 6 пар, а к сумме 2 или 12 — по одной. Поэтому два кубика концентрируют шансы в середине. При высоком пороге это невыгодно, при пороге около середины — выгодно. Одинаковый максимум (12) не означает одинаковую сложность испытания.

Зависимость, которую не видно по одному кубику

Пусть первый кубик бросается, а второй выставляется на то же число. Заметим ли мы подмену, если смотреть только на второй кубик?

repeats = 12000
first = rng.integers(1,7,repeats)
independent = rng.integers(1,7,repeats)
copied = first.copy()
for second, name in [(independent, 'Независимые'), (copied, 'Второй копирует первый')]:
    print(name, ': частота суммы 7 =', np.mean(first+second==7))

В независимой модели сумма 7 встречается примерно в 16% случаев, во второй модели — ни разу (0.0).

Частоты граней второго кубика в обеих моделях близки к \(\frac{1}{6}\), поэтому по ним подмену не заметить. Различие видно в таблице пар: независимые кубики заполняют всю сетку, а копирующая модель — только диагональ (1,1), (2,2), …, (6,6). Там сумма всегда равна \(2x\) и чётна, поэтому сумма 7 не появляется.

Тренажёр: кубики

  1. \(A\) — «чётное», \(B\) — «не меньше 4». Найдите \(P(A \cap B)\) и \(P(A \cup B)\). Почему нельзя просто сложить \(P(A)\) и \(P(B)\)?

Решение. \(A \cap B = \{4, 6\}\), \(P = \frac{2}{6} = \frac{1}{3}\). \(A \cup B = \{2, 4, 5, 6\}\), \(P = \frac{4}{6} = \frac{2}{3}\). Сумма \(P(A) + P(B) = \frac{3}{6} + \frac{3}{6} = 1\) считает 4 и 6 дважды, поэтому пересечение вычитают: \(\frac{3}{6} + \frac{3}{6} - \frac{2}{6} = \frac{4}{6}\).

  1. У двух независимых кубиков что вероятнее: хотя бы одна шестёрка или ровно одна?

Решение. Хотя бы одна шестёрка: \(\frac{11}{36} \approx 30.6\%\). Ровно одна: \(\frac{10}{36} \approx 27.8\%\). Событие «хотя бы одна» включает «ровно одну» и ещё пару (6,6). Симуляция дала 0.306 и 0.278.

  1. Замените копирование на 7 - first и подпишите вторую модель «Дополняет до семи». Предскажите вид таблицы пар и частоту суммы.

Решение. Второй кубик всегда равен \(7 - \text{first}\), поэтому пары лежат на побочной диагонали: (1,6), (2,5), …, (6,1). Сумма всегда равна 7, её частота равна 1. Частоты граней второго кубика при этом остаются близкими к \(\frac{1}{6}\).

Пороги 7 и 12 для выбора между d12 и 2d6 разобраны в таблице выше.

Глава 14

Плейлист: повтор рядом, альбомы и итоги

01:58:54 — 02:06:39

Процедура выбора определяет повторы и шансы песен. Симуляции подтверждают расчёт для повтора рядом. В конце предлагаются вопросы и задания для самостоятельной работы.

Повтор рядом и повтор вообще

Пусть из десяти песен независимо выбирают десять раз. Тогда «любой повтор» и «повтор рядом» — разные события.

  • Любой повтор: какая-либо песня встречается дважды. Его не будет, только если все десять выборов различны. Шанс этого равен \(\frac{10!}{10^{10}} \approx 0.0004\), поэтому повтор почти наверняка есть.
  • Повтор рядом: две соседние позиции совпадают. На каждой паре шанс совпадения \(\frac{1}{10}\), а без совпадения следующий выбор проходит с шансом \(\frac{9}{10}\). Для девяти переходов получаем \(1-(9/10)^9 \approx 0.61\).

Три правила выбора

Правило выбора Повтор рядом Любой повтор
Любая песня, независимо возможен возможен
Случайная перестановка нет нет
Без соседнего повтора нет возможен

Перестановка использует каждую песню не больше одного раза, поэтому повторов нет вовсе. Запрет соседнего повтора не мешает вернуться к песне позже. Его можно реализовать так:

k, n = 10, 10
out = [int(rng.integers(k))]
for _ in range(n - 1):
    prev = out[-1]
    j = int(rng.integers(k - 1))   # выбираем из k-1 песен, без предыдущей
    out.append(j + (j >= prev))    # сдвиг индекса пропускает предыдущую песню
Примеры плейлистов: любая песня, перестановка, без соседнего повтора
Примеры плейлистов: любая песня, перестановка, без соседнего повтора

20 выборов из 10 песен

Проверим формулу симуляцией:

K, n, M = 10, 20, 30_000
songs = rng.integers(0, K, (M, n))
repeat = (songs[:, 1:] == songs[:, :-1]).any(axis=1)
exact_repeat = 1 - ((K - 1) / K) ** (n - 1)

Симуляция дала 0.865, формула \(1-(9/10)^{19} \approx 0.8649\). Чтобы повтора рядом не было, каждый из 19 переходов должен пройти с шансом \(\frac{9}{10}\). Искомый шанс — дополнение к этому произведению.

От числа прослушиваний и размера каталога

При \(n\) прослушиваниях и \(K\) песнях шанс соседнего повтора равен \(1-\left(1-\frac{1}{K}\right)^{n-1}\).

Прослушиваний 5 песен 10 песен 30 песен
5 0.590 0.344 0.127
20 0.986 0.865 0.475
40 1.000 0.984 0.733

Чем длиннее плейлист, тем больше мест для совпадения. Чем больше каталог, тем меньше шанс совпасть на каждом шаге. Эти выводы относятся к независимому выбору с возвращением.

Вероятность соседнего повтора по числу прослушиваний для 5, 10 и 30 песен
Вероятность соседнего повтора по числу прослушиваний для 5, 10 и 30 песен

Альбомы: процедура задаёт шансы

В библиотеке два альбома: A из двух песен и B из восьми. Сравним два способа выбора.

Способ Шанс, что звучит песня из A Шанс отдельной песни A
Сначала альбом \(\frac12\), затем песня \(\frac12\) \(\frac12\cdot\frac12=\frac14\)
Одна из всех 10 песен \(\frac{2}{10}\) \(\frac{1}{10}\)

В первом способе альбом получает половину выбора независимо от размера. Поэтому песня короткого альбома получает больший вес. Во втором способе все песни равноправны.

Если сделать альбомы по 5 песен, то в первом способе каждая песня получит \(\frac12\cdot\frac15=\frac1{10}\), как и во втором. Разница исчезает. Слова «выберем случайно» недостаточно: нужно описать процедуру.

Ответы на вопросы главы

  1. Равные вероятности не гарантируют равных частот в короткой серии. Короткая серия содержит случайный разброс, а частоты приближаются к \(\frac16\) только с ростом числа бросков.
  2. Суммы двух честных кубиков не равновозможны. Сумма 7 получается шестью парами, а сумма 2 — только парой (1, 1): шансы \(\frac{6}{36}\) и \(\frac{1}{36}\).
  3. Запрет соседнего повтора убирает повтор рядом по построению: выбор идёт из песен, кроме предыдущей. Перестановка убирает любой повтор за один проход.

Задания для самостоятельной работы

Перед запуском запишите ожидаемое направление изменения.

  • Длина серии 3 вместо 5. Ответ: доля историй с серией вырастет. Короткая серия может начаться в большем числе мест.
  • Кубик с неравными вероятностями. Ответ: частоты сойдутся к заданным весам, а не к \(\frac16\).
  • Плейлисты из 10 и 100 песен одинаковой длины (20 прослушиваний). Ответ: для 10 песен шанс соседнего повтора около 0.865, для 100 — около \(1-0.99^{19} \approx 0.17\). Большой каталог даёт меньше повторов.
  • Дополнительно. Какой шанс, что звучит песня альбома A? Ответ: \(\frac12\) при выборе альбома, затем песни, и \(\frac15\) при выборе из всех десяти.

Ключевые цитаты

«Вероятность идёт от того, что у нас есть какая-то модель мира, и она может порождать какие-то данные. Статистика идёт в обратную сторону. У нас есть данные, и мы по ним пытаемся понять, из какого распределения, из какой модели они были получены.»
17:34 Это различие задаёт, какие вопросы решает вероятность, а какие статистика.
«Частота 14 на 20, то есть 0,7, ещё не доказывает, что шанс орла равен 0,7.»
18:29 Одна наблюдённая частота не равна вероятности, поэтому нужен учёт случайного разброса.
«Когда нас что-то удивляет в жизни, сразу стоит себя спрашивать: а сколько было возможностей его заметить?»
40:36 Этот вопрос помогает отличить редкое совпадение от закономерности при большом числе попыток.
«Почему надо всегда сохранять сид? Потому что если его не сохранили, это не значит, что его не было. Он есть, просто вы его не знаете, и вы не сможете воспроизвести результаты.»
01:07:18 Воспроизводимость расчёта требует фиксации seed.
«Миллион опытов не исправит неправильные правила.»
01:08:14 Большая выборка уточняет оценку внутри модели, но не проверяет саму модель.

Глоссарий

Исход
Результат одного опыта, например выпадение орла или решки при одном броске монеты. Все возможные исходы образуют пространство исходов \(\Omega\).
Событие
Набор исходов, которые нас интересуют, например \(A=\{O\}\) — «выпал орёл». Событие может объединять несколько исходов.
Вероятность для равновозможных исходов
Для конечного набора равновозможных исходов \(P(A)=\frac{|A|}{|\Omega|}\): число подходящих исходов, делённое на число всех исходов.
Дополнение события
Событие \(A^c\) состоит из всех исходов, не входящих в \(A\). Его вероятность \(P(A^c)=1-P(A)\); этим удобно пользоваться для фраз «хотя бы один».
Пересечение и объединение
\(A\cap B\) — выполнены оба условия, \(A\cup B\) — выполнено хотя бы одно. Для них верно \(P(A\cup B)=P(A)+P(B)-P(A\cap B)\): пересечение вычитается, потому что учтено дважды.
Независимые броски
Результат одного броска не зависит от прошлых. Для независимых бросков вероятность конкретной последовательности равна произведению вероятностей отдельных бросков, например \((1/2)^3=1/8\) для OPO.
Случайная величина
Числовая характеристика исхода, например сумма очков двух кубиков. Её распределение задаётся вероятностями её значений.
Аксиоматика Колмогорова
Общий язык описания опытов: сначала задаются все возможные исходы, затем интересующее событие и вероятности. Так игры и наблюдения описываются одними правилами.
Частотный подход
Вероятность связывается с устойчивой долей успехов в длинной серии повторяемого опыта. Опирается на эмпирическое распределение данных.
Байесовский подход
Вероятность выражает уверенность с учётом всей доступной информации. Новые сведения могут изменить оценку.
Статистика
Задача, обратная вероятностной: по наблюдённым данным пытаются понять, из какой модели или распределения они получены.
Закон больших чисел
При большом числе повторений доля успехов приближается к вероятности успеха. Например, доля орлов в честных бросках стремится к \(1/2\), хотя перевес орлов над решками может оставаться большим.
Случайное блуждание
Процесс, в котором каждый бросок сдвигает положение на шаг: орёл — на +1, решка — на −1. Разность орлов и решек показывает его текущее положение.
Серия
Подряд идущие одинаковые результаты, например пять орлов подряд. Чувствительность к длинным сериям влияет на наше восприятие случайности.
Переключение
Смена результата между двумя соседними бросками: орёл сменился решкой или наоборот.
Дерево исходов
Схема, в которой каждый бросок добавляет развилку. Для трёх бросков получаем восемь путей от корня до конца дерева.
Рандомизация эксперимента
Случайное назначение условий опыта, например перемешивание сортов пшеницы по участкам поля. Помогает честнее сравнивать группы и уменьшает влияние скрытых факторов.
АБ-тестирование
Сравнение двух условий, А и Б, в случайно распределённых группах. Основано на той же логике рандомизированного эксперимента.
Seed
Зерно генератора, задающее его начальное состояние. При одном и том же алгоритме и seed генератор выдаёт одну и ту же последовательность, что нужно для воспроизводимости расчётов.
Генератор псевдослучайных чисел
Алгоритм, который детерминированно выдаёт последовательность чисел, похожую на случайную. Его качество нельзя оценить по нескольким значениям: нужны изученные свойства алгоритма.
Блез Паскаль (1623–1662)
Французский математик. Вместе с Пьером Ферма в 1654 году обсуждал задачу о справедливом разделе ставки в прерванной игре.
Пьер Ферма (1607–1665)
Французский математик, партнёр Паскаля в переписке об азартных играх и разделе банка в 1654 году.
Джон Граунт (1620–1674)
Английский исследователь, который в 1662 году опубликовал анализ лондонских записей о смертности, сравнивая сведения в таблицах.
Карл Фридрих Гаусс (1777–1855)
Математик, в начале XIX века разрабатывал методы объединения неточных наблюдений, например в астрономии.
Рональд Фишер (1890–1962)
Статистик, работавший в Ротамстеде и развивавший планирование экспериментов, в том числе идею случайного назначения условий.
Андрей Колмогоров (1903–1987)
Математик, в 1933 году изложивший аксиоматические основания теории вероятностей.
Дональд Кнут (род. 1938)
Автор многотомного «Искусства программирования», где описаны генераторы псевдослучайных чисел и алгоритм K.

Вопросы для самопроверки

  1. Что такое пространство исходов и событие? Приведите пример для одного броска монеты.
    Показать ответ
    Пространство исходов \(\Omega\) — все возможные результаты опыта. Для монеты \(\Omega=\{O,P\}\). Событие — подмножество исходов, например \(A=\{O\}\) означает «выпал орёл».
  2. В чём разница между вероятностной задачей и статистической задачей?
    Показать ответ
    В вероятностной задаче модель известна, и мы считаем, какие данные она даст, например, какие результаты дадут 20 бросков честной монеты. В статистической задаче данные известны, и мы пытаемся понять, какая модель их породила.
  3. Почему 14 орлов из 20 бросков не доказывают, что шанс орла равен \(0.7\)?
    Показать ответ
    Частота \(14/20=0.7\) — результат случайного опыта, и её разброс может быть большим. Поэтому из одной частоты нельзя сделать вывод о точном значении вероятности, нужен учёт случайного разброса.
  4. В чём отличие частотного и байесовского взгляда на вероятность?
    Показать ответ
    Частотный взгляд связывает вероятность с долей успехов в длинной серии повторений. Байесовский взгляд выражает уверенность с учётом доступной информации, и новые сведения могут изменить оценку.
  5. Игра до трёх побед прервана при счёте 2:1, банк 100. Как разделить банк по шансам победить?
    Показать ответ
    Если игра продолжилась бы, А выигрывает, набрав три победы, в трёх из четырёх равновозможных продолжений: АА, АB, ВА. Поэтому А получает \(75\), Б — \(25\), то есть \(\frac{3}{4}\cdot 100\) и \(\frac{1}{4}\cdot 100\).
  6. Чему равна вероятность выпадения десяти орлов подряд у честной монеты и что она доказывает?
    Показать ответ
    Для заранее выбранных десяти независимых бросков \(P=(1/2)^{10}=\frac{1}{1024}\). Эта серия редка, но возможна, и сама по себе не доказывает, что монета нечестная.
  7. Сколькими способами три броска монеты дают ровно один орёл, и чему равна вероятность? Чему равна вероятность хотя бы одного орла?
    Показать ответ
    Подходят OPP, POP и PPO, то есть 3 из 8 равновозможных исходов: \(P=\frac{3}{8}\). Хотя бы один орёл удобно считать через дополнение: \(1-\frac{1}{8}=\frac{7}{8}\).
  8. Почему шансы заранее выбранной строки из шести орлов и заранее выбранной конкретной смешанной строки одинаковы, но выглядят по-разному?
    Показать ответ
    Шанс каждой конкретной строки равен \(\frac{1}{64}\), поэтому выбранные заранее строки равновероятны. Но шесть орлов — один заметный паттерн, тогда как подходящих смешанных строк очень много, и мы не выделяем конкретную смешанную строку как особую.
  9. Для честного кубика чему равны \(P(A\cap B)\) и \(P(A\cup B)\), если A — «чётное», B — «не меньше четырёх»?
    Показать ответ
    \(A\cap B=\{4,6\}\), поэтому \(P(A\cap B)=\frac{2}{6}\). \(P(A)=\frac{3}{6}\), \(P(B)=\frac{3}{6}\), значит \(P(A\cup B)=\frac{3}{6}+\frac{3}{6}-\frac{2}{6}=\frac{4}{6}\). Складывать \(P(A)\) и \(P(B)\) нельзя, потому что грани 4 и 6 учтены дважды.
  10. Сравните шансы успеха при пороге не меньше 10 для d12 и для суммы 2d6. Какой кубик выгоднее и почему?
    Показать ответ
    У d12 шанс \(\frac{3}{12}\), у 2d6 — \(\frac{6}{36}\), поэтому выгоднее d12. Два кубика чаще дают середину суммы, и при высоком пороге этот выигрыш не помогает. При пороге не меньше 7 выгоднее 2d6: \(\frac{21}{36}\) против \(\frac{6}{12}\).
  11. Почему у выбора «сначала альбом, потом песня» другие шансы для песен, чем у выбора из всей библиотеки?
    Показать ответ
    Песня короткого альбома (из двух) получает шанс \(\frac{1}{2}\cdot\frac{1}{2}=\frac{1}{4}\), песня длинного (из восьми) — \(\frac{1}{2}\cdot\frac{1}{8}=\frac{1}{16}\). При выборе из всех десяти песен каждая получает \(\frac{1}{10}\). Процедура задаёт шансы, поэтому её нужно описать заранее.
  12. Почему в 20 выборах из 10 песен вероятность хотя бы одного соседнего повтора около 86.5%?
    Показать ответ
    Без соседнего повтора каждый следующий выбор должен отличаться от предыдущего: 9 вариантов из 10. Вероятность отсутствия повтора равна \((9/10)^{19}\), поэтому повтор есть с вероятностью \(1-(9/10)^{19}\approx 0.865\).
  13. Почему seed нужно сохранять и почему одна фиксация в начале важнее повторной установки перед каждым бросанием?
    Показать ответ
    Seed задаёт состояние генератора, поэтому тот же алгоритм с тем же seed даёт ту же последовательность, и результаты можно воспроизвести. Если задавать тот же seed перед каждым броском, будем повторять первый результат, а не получать новую последовательность.
  14. Почему вероятность пяти орлов в первых пяти бросках (\(1/32\)) и хотя бы одной серии из пяти орлов среди ста бросков (около 81%) отличаются так сильно?
    Показать ответ
    В первом случае место серии задано заранее, поэтому вероятность \(\frac{1}{32}\). Во втором случае подходит любое из 96 окон длины пять, поэтому шанс появления серии где-нибудь в истории гораздо выше. Окна пересекаются, и их вероятности нельзя просто сложить.
  15. Что такое случайное блуждание в задаче с монетой и чем доля орлов отличается от перевеса орлов над решками?
    Показать ответ
    Орёл даёт шаг +1, решка — шаг −1, и положение после \(n\) бросков равно разности орлов и решек. Доля орлов \(H/n\) может приближаться к \(1/2\), а перевес \(H-T\) при этом может оставаться заметным, например \(+144\) после 10000 бросков.

Что изучить дополнительно

  • Байесовский подход к вероятности на практике
    Лектор сказал, что он требует много информации и знания процесса генерации данных, и не раскрыл, как его применять.
  • Генераторы псевдослучайных чисел и алгоритм K
    Лектор показал, что сложный алгоритм может зациклиться, и отправил к «Искусству программирования», том 2, §3.1.
  • Доверительные интервалы
    Лектор упомянул, что при малом числе наблюдений интервал оценки вероятности очень широкий, но не объяснил его построение.
  • Законы больших чисел и случайные блуждания
    Лектор сказал, что теоремы описывают поведение на больших числах, и связал блуждания с физикой, но не разобрал доказательства.
  • Парадоксы теории вероятностей
    Лектор посоветовал статью «Что не так? Три парадокса теории вероятностей» о важности процедуры выбора.

Упоминания

  • Блез Паскаль человек
    Вместе с Пьером Ферма обсуждал в 1654 году задачу о разделе ставки в прерванной игре.
  • Пьер Ферма человек
    Партнёр Паскаля по переписке о задачах азартных игр, пример с игрой до трёх побед.
  • Джон Граунт человек
    В 1662 году опубликовал исследование лондонских записей о смертности.
  • Карл Фридрих Гаусс человек
    Разрабатывал методы объединения неточных наблюдений в начале XIX века, в том числе в астрономии.
  • Рональд Фишер человек
    Работая в Ротамстеде, развивал планирование экспериментов и случайное назначение условий.
  • Андрей Колмогоров человек
    В 1933 году изложил аксиоматические основания вероятности.
  • Дональд Кнут человек
    Автор «Искусства программирования», где рассматриваются генераторы случайных чисел и алгоритм K.
  • Искусство программирования, том 2 книга
    Дональд Кнут, §3.1: история генераторов псевдослучайных чисел и алгоритм K, рекомендовано для самостоятельного чтения.
  • Розенкранц и Гильденстерн мертвы книга
    Пьеса Тома Стоппарда, в которой монета снова и снова падает орлом; использована как иллюстрация к отношению людей к случайности.
  • Что не так? Три парадокса теории вероятностей книга
    Рекомендованная для чтения статья, где важна процедура выбора.
  • Важнейшая модель теории вероятностей книга
    Рекомендованная статья о случайных блужданиях и связях с физикой.
  • Ротамстед другое
    Место работы Рональда Фишера, где развивалось планирование экспериментов.
  • NumPy инструмент
    Библиотека для симуляций: генерация случайных чисел и вычисления на массивах.
  • matplotlib инструмент
    Библиотека для построения графиков гистограмм, линий и тепловых карт на семинаре.
  • Google Colab инструмент
    Среда, в которой выполняются семинарские примеры с кодом.
  • WinRAR, zip инструмент
    Архиваторы как пример сжатия информации через поиск избыточности, по аналогии с человеческим восприятием паттернов.
  • Хабр ссылка
    Ресурс, где лектор обещал популярные статьи о генераторах случайных чисел.

Карточки для запоминания

46 карт.
Экспорт ↓
Anki (.apkg) CSV
Вопрос
Нажмите на карточку или пробел, чтобы перевернуть
Ответ
← → листать · пробел — перевернуть · 1 — ещё учу · 2 — знаю

Задачи и решения

0 из 3 сделано
Экспорт ↓
В календарь (.ics) CSV Markdown

Задачи

  • Прочитать книгу Кнута «Искусство программирования» о генераторах случайных чисел
    ответственный не назначен срок не назван

    Цитата · 01:09:44«Что почитать, то тоже, если хочется проуглубиться, вот есть книга у»

  • Запустить симуляцию из семинара с другим параметром и разобрать результат
    ответственный не назначен срок не назван

    Цитата · 01:56:28«Для самостоятельного изучения, чтобы был какой-то интерес, попробуйте это запустить с другим параметром.»

  • Поиграть с задачками семинара и попробовать разные параметры
    ответственный не назначен срок не назван

    Цитата · 02:05:15«Тоже поиграйте с задачками, позадавайте разные параметры.»

Артефакты

Схемы, графики и таблицы, которые сервис собрал по этой записи. Их отбирает модель — только то, без чего материал труднее понять; они же встают в конспект.

Вероятность и статистика: исходная информация, вопрос, вывод

Таблица
Скачать ↓
АспектВероятностьСтатистика
Исходная информацияМодель мира: вероятности заданыДанные: 14 орлов из 20 бросков
ВопросКакие данные даст модель?Какая модель породила данные?
Направление выводаОт модели к даннымОт данных к модели
ПримерСколько орлов будет в 20 бросках?Что говорят 14 орлов о монете?