Краткое содержание
Лекция и семинар вводят базовые понятия теории вероятностей. Вероятность возникла из практических задач: делёж ставки в прерванной игре, обработка записей и наблюдений, планирование экспериментов. Затем рассматриваются аксиоматика, события, независимость, серии и дерево исходов. Семинар проверяет интуицию симуляциями монеты, кубиков и плейлиста. Главный вывод: результат симуляции верен лишь в выбранной модели, а её предположения нужно проверять отдельно.
Главные выводы
- Вероятность связана с моделью опыта: сначала описываем исходы, события и предположения, затем считаем
- Равновероятные исходы не дают равных частот в коротких сериях; большое число повторений уточняет оценку внутри модели
- Редкое событие не доказывает нарушение модели; нужно сравнивать с числом возможностей, в которых оно могло произойти
- Дополнение, пересечение и объединение считаются по правилам, а несовместные события складываются
- Зависимость между исходами меняет пространство исходов и вероятности
- Процедура выбора (сначала альбом, затем песня) меняет шансы, поэтому слово «случайно» требует уточнения
- Псевдослучайные генераторы нужно выбирать по свойствам; 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 фиксируют, чтобы результат повторялся у других.
Правила выбора модели
- Сначала назвать процедуру, событие и предположения.
- Порядок результатов важен.
- Большое число повторов уточняет оценку внутри модели, но не исправляет модель.
Главы
Зачем считать шансы и как разделить ставку
00:00 — 09:57Вероятность нужна для решений в условиях неопределённости. Классическая задача Паскаля и Ферма показывает, как честно разделить банк прерванной игры.
Вероятность нужна для двух практических задач: принимать решения, когда исход неизвестен, и понимать, насколько вероятен каждый исход. Обе задачи появились задолго до формальной теории.
Жребий, игры и первые записи
Жребий помогает принять решение, когда нет оснований выбрать один вариант из нескольких. Игры известны с древности. Игроку, однако, мало знать результат жребия. Ему нужно понять, выгодны ли условия игры.
Позже люди стали записывать данные: переписи городов, наблюдения астрономов. Накопив много записей, их начали сравнивать и задаваться вопросами: почему числа получились именно такими и какой механизм их породил. Так выросли две линии, из которых позже сложились вероятность и статистика.
Задача о прерванной игре
В 1654 году Паскаль и Ферма обсуждали задачу, которая стала классической. Игра идёт до трёх побед, каждый раунд честный и независимый от других. Игру прервали при счёте 2:1, банк равен 100. Как разделить банк?
Есть три разумных варианта:
- Поровну, 50:50. Ставки возвращаются, игра признаётся несостоявшейся.
- По счёту 2:1. Банк делится по числу выигранных раундов.
- По шансам на победу. Оценивается, чем мог бы закончиться матч, и банк делится по этим шансам.
Из зала предложили вернуть каждому половину ставки, поскольку сыграна лишь часть партий. Мысль интересная, но доля сыгранных партий не отвечает на главный вопрос: кто ближе к победе. Кроме того, до трёх побед игра длится не больше пяти партий, а не шести, как прикидывали вначале.
Расчёт по шансам
Представим, что игра продолжается. Игроку А нужна ещё одна победа, игроку Б — две. Доиграем мысленно два раунда, чтобы все пути имели одинаковую длину. Получаем четыре равновозможных продолжения.
Если А выиграет первый из добавленных раундов, второй уже ничего не меняет. Мы всё равно его учитываем, чтобы сравнивать пути одинаковой длины.
Ожидание и делёж банка
Ожидаемая доля каждого игрока равна его шансу, умноженному на банк:
Данные, измерения и планирование экспериментов
09:57 — 15:42Граунт учился сравнивать записи, Гаусс и Лаплас объединяли неточные наблюдения, Фишер предложил случайное назначение условий в опытах.
Записи о смертности: сравнение вместо отдельного случая
В 1662 году Джон Граунт опубликовал анализ лондонских записей о смертности. Судьбу отдельного человека предсказать нельзя, но в больших группах видны устойчивые доли и изменения во времени. Для этого записи объединяют в таблицы и сравнивают между собой.
Объединение неточных наблюдений
В начале XIX века Лежандр и Гаусс разрабатывали методы объединения неточных наблюдений. Такие задачи возникали, например, в астрономии: разные наблюдения одного объекта дают разные числа, и из них нужно получить один ответ и оценку разброса.
Пять измерений одной длины
Одну и ту же длину измерили пять раз, см: 9.8; 9.9; 10.0; 10.1; 10.2.
Какое значение взять за ответ? Можно выбрать то, которому больше доверяем, или использовать среднее:
Систематическая ошибка
Если линейка неточна, все измерения смещены в одну сторону. Усреднение уменьшает случайный разброс, но смещение сохраняется.
Урожайность: честное сравнение условий
Два условия, A и B, например два вида пшеницы или два варианта удобрения. На одном участке урожай выше. Причиной может быть условие, но также почва или погода. Если условие A всегда стоит на левой половине поля, а B на правой, эффект условия смешивается с различиями почвы.
Решение — перемешать условия по участкам. Каждый участок получает условие случайно.
Рандомизация по Фишеру
Работая в Ротамстеде, Рональд Фишер развивал планирование экспериментов. Случайное назначение условий помогает сделать группы сравнимыми: неизмеренные факторы, например свойства почвы, в среднем распределяются между группами одинаково. Это уменьшает риск спутать влияние условия с различиями участков.
Порядок действий:
- Делим поле на участки.
- Для каждого участка случайно выбираем A или B.
- Сравниваем средний урожай на участках A и на участках B.
Аксиомы вероятности и два взгляда на неё
15:42 — 25:21Колмогоров описал вероятность через исходы, события и вероятности. Вероятность идёт от модели к данным, статистика наоборот. Частотный и байесовский взгляды дают разные ответы на вопрос, что значит «вероятность».
Три шага Колмогорова
В 1933 году Андрей Колмогоров изложил основания теории вероятностей в виде аксиом. Работа с любой задачей идёт в три шага:
- Назвать все возможные исходы опыта. Их множество обозначают \(\Omega\).
- Указать событие, то есть набор исходов, шанс которого нас интересует.
- Задать вероятности.
| Опыт | Исходы | Событие |
|---|---|---|
| Монета | О или Р | выпал орёл |
| Два кубика | пара \((a, b)\) | сумма не меньше 10 |
| Плейлист | последовательность песен | есть повтор подряд |
Аксиомы задают правила для вероятностей. Для любого события \(A\) выполняется
а для несовместных событий \(A\) и \(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-тестах чаще используют частотный подход. Он опирается на эмпирическое распределение: подсчитали, как клиенты ведут себя в разных вариантах, накопили данные и считаем, что они описывают клиентов за выбранный период.
Байесовский подход тоже применяется, но реже. Для байесовского расчёта нужно задать вероятностную модель и априорное распределение; подробное описание физики процесса и всех связей между признаками не обязательно. Построение модели может быть сложным как в крупных сервисах, так и в небольших компаниях.
Серии, строки и дерево исходов
25:21 — 34:22Редкость серии не доказывает нечестности монеты. Дерево исходов и дополнение позволяют считать вероятности событий, например «хотя бы один орёл».
Десять орлов подряд
В пьесе Тома Стоппарда «Розенкранц и Гильденстерн мертвы» монета снова и снова падает орлом, а герои ищут объяснение странной серии. Оценим, насколько такая серия вероятна. Пусть заранее выбраны 10 честных независимых бросков (число 10 взято для примера). Шанс, что все они окажутся орлами:
Каждый бросок даёт орла с шансом \(\frac{1}{2}\). Броски независимы, поэтому шансы перемножаются.
Редкое событие ещё не доказывает подвоха
Шанс \(\frac{1}{1024}\) мал, но не равен нулю, значит, серия возможна. Десять орлов подряд не доказывают, что монета нечестная: честная монета тоже иногда даёт такие серии. Чтобы судить о самой монете, нужно больше бросков. По одной серии о ней можно сказать немного.
Случайность как непредсказуемость
Мы называем случайным то, что нельзя предсказать. Заметив паттерн, мы считаем, что есть правило, и делаем вывод, что предположение о честной монете нарушено. Но любая конкретная последовательность из десяти бросков при честной монете имеет тот же шанс \(\frac{1}{1024}\), что и серия орлов. Паттерн говорит о нашем восприятии, а не о механизме опыта.
Две строки по 24 броска
В строке A орлы и решки чередуются без длинных серий. Строка B начинается с пяти орлов подряд. Большинство участников выбирает A как «более случайную», а B считает подозрительной. Однако обе строки могли получиться честной монетой: каждая конкретная строка из 24 бросков имеет одинаковый шанс.
Событие и все исходы
Опыт в этом разделе — один бросок. Все возможные результаты образуют пространство исходов:
Строчной буквой \(\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
Чтобы найти вероятность события, выделим подходящие пути и разделим их число на общее число путей:
- Подходят пути с одним орлом: OPP, POP, PPO.
- Всего путей восемь.
- Положение орла различается, но условие выполнено во всех трёх случаях.
Хотя бы один орёл: дополнение
Перечислять семь путей с орлом можно, но проще найти единственный путь без орла: PPP. Событие «хотя бы один орёл» — дополнение к событию «ни одного орла»:
Одинаковые шансы, разные впечатления
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\): монета не «копит» долг и не обязана исправлять счёт. Доля орлов может приближаться к половине, но не из-за серии решек, а за счёт большого числа бросков.
Независимость, дополнение, пересечение, объединение
45:15 — 55:03Для честного кубика шансы граней одинаковы. Пересечение, объединение и дополнение считаются по обычным правилам. Зависимость кубиков меняет пространство исходов.
Честный кубик: шесть равных шансов
У честного шестигранного кубика каждая грань выпадает с вероятностью \(\frac{1}{6}\). Исход опыта здесь одна грань, и все шесть исходов равновозможны.
Событие «выпало чётное» объединяет три исхода: 2, 4 и 6. Их шансы складываются:
Три правила, на которых держится расчёт
Любая модель опыта подчиняется трём правилам:
- Вероятность события неотрицательна: \(P(A) \ge 0\).
- Вероятность всего пространства исходов равна 1: \(P(\Omega)=1\).
- Для несовместных событий вероятности складываются. Несовместные события не могут произойти вместе.
Один бросок не даёт одновременно двойку и четвёрку, поэтому
Дополнение: шанс того, что событие не наступит
Дополнение события \(A\) — все исходы, которые в \(A\) не входят. Его обозначают \(A^c\). Событие \(A\) и его дополнение не пересекаются и вместе покрывают все исходы, поэтому их вероятности в сумме дают 1:
Пример: шанс не выбросить шестёрку равен \(1 - \frac{1}{6} = \frac{5}{6}\). Считать так проще, чем перечислять пять граней, и тот же приём работал для «хотя бы один орёл» в предыдущей части.
Пересечение: выполнены оба условия
Пусть \(A\) — выпало чётное, а \(B\) — выпало не меньше четырёх. Тогда
Пересечение \(A \cap B\) — исходы, которые подходят под оба условия сразу. Это грани 4 и 6:
Исход 2 подходит только под \(A\), а исход 5 — только под \(B\). В пересечение они не попадают.
Объединение: выполнено хотя бы одно условие
Объединение \(A \cup B\) — выполнено хотя бы одно из условий, включая случай, когда выполнены оба. Исходы 4 и 6 входят и в \(A\), и в \(B\). Если просто сложить \(P(A)\) и \(P(B)\), они учтутся дважды, поэтому одно пересечение вычитают:
Подставим значения:
Проверка перечислением: \(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|}\) здесь не годится: исходы не равновозможны, и подсчёт граней ничего не даст. Вероятности складываются как веса:
Правило «число благоприятных на число всех» работает только для конечных равновозможных исходов.
Два кубика: 36 равновозможных пар
Опыт с двумя кубиками даёт упорядоченную пару \((a, b)\): \(a\) — результат первого кубика, \(b\) — второго. Порядок важен: пара \((4, 6)\) отличается от \((6, 4)\). Всего пар \(6 \cdot 6 = 36\), и при честных независимых кубиках каждая имеет шанс \(\frac{1}{36}\).
Сумма 7 получается из шести пар: \((1,6), (2,5), (3,4), (4,3), (5,2), (6,1)\). Поэтому
Разные пары дают одинаковую сумму. Сама сумма — числовая характеристика исхода. Позже такую величину назовём случайной величиной.
Зависимость меняет пространство исходов
Теперь второй кубик выставляют на то же число, что выпало на первом. Каждый кубик по отдельности остаётся честным. Но пар становится только шесть:
Сумма 7 исчезает, все суммы чётные: \(a + a = 2a\). Здесь не изменилась честность граней, а изменилась связь результатов. Поэтому, прежде чем считать, нужно знать, зависят ли результаты друг от друга, потому что от этого зависит и список возможных исходов.
d12 или 2d6: какой кубик выбрать
Сравним два способа получить число от 1 до 12. d12 — один двенадцатигранный кубик: каждое число выпадает с шансом \(\frac{1}{12}\). 2d6 — сумма двух шестигранников, она распределена «куполом» с пиком при 7.
Выбор зависит от порога успеха:
| Условие успеха | 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, не означает одинаковую сложность испытания.
Плейлист, альбомы и генераторы случайных чисел
55:03 — 01:06:21Результат зависит от процедуры выбора: выбор альбома, затем песни, даёт другие шансы, чем выбор из общей библиотеки. Псевдослучайные генераторы выбирают по изученным свойствам.
Три правила перемешивания
Плейлист можно собрать тремя способами. Все они используют случайность, но дают разный опыт прослушивания.
| Правило | Как выбирается трек | Что может произойти |
|---|---|---|
| Любая песня | На каждом шаге любой трек из каталога, все равновероятны | Любимый трек может прозвучать дважды подряд |
| Одна перестановка | Весь каталог перемешивается и проигрывается один раз | Повторов нет: каждая песня звучит не более одного раза |
| Без соседнего повтора | Выбор случаен, но следующий трек не совпадает с предыдущим | Подряд повтора нет, через несколько песен он возможен |
20 песен и 19 переходов
Пусть каталог состоит из 10 песен, а плейлист из 20 выборов выполняется независимо, с возвращением. Нужно найти шанс хотя бы одного повтора рядом.
Удобнее считать противоположное событие: соседних повторов нет.
- Первый выбор: любая из 10 песен, шанс \(10/10\).
- Каждый следующий выбор должен отличаться от предыдущей песни: 9 подходящих вариантов из 10, шанс \(9/10\).
- Между 20 позициями 19 переходов.
Шанс, что соседних повторов нет, равен \((9/10)^{19}\). Тогда шанс хотя бы одного повтора рядом:
Альбомы: процедура меняет шансы
Пусть есть альбом A из двух песен (A1, A2) и альбом B из восьми песен (B1–B8). Всего 10 разных треков. Сравним два способа выбора:
- Выбрать альбом с шансами \(1/2\) и \(1/2\), затем песню внутри него с равными шансами.
- Выбрать сразу одну из 10 песен, не глядя на альбомы.
Для первого способа шанс каждой песни считается как произведение шансов по шагам:
- песня 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 и стал повторять его:
Алгоритм попал в неподвижную точку: из этого состояния он уже не выходит.
Из этого примера следуют несколько выводов:
- По виду результатов качество генератора не определить. Последовательность может выглядеть случайной, а при отдельных начальных значениях зациклиться или выдать строгий паттерн.
- Аналитически разобрать сложный алгоритм тоже трудно.
- Поэтому генераторы строят из операций, у которых изучены свойства и границы их поведения, а затем комбинируют.
Порядок результатов, 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 не появится ни в одном повторе.
Большое число повторов уточняет вероятность внутри модели. Саму модель нужно проверять отдельно.
Порядок действий перед расчётом
Для нового вопроса назовите три вещи: процедуру (что делаем), событие (что считаем успехом) и предположения (честность, независимость, выбор с возвращением или без). Только после этого считайте формулу или запускайте симуляцию.
Семинар: цели и настройка среды
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.
Строка человека против генератора и случайное блуждание
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 стоит на её правом краю.
Признак нужно выбрать до просмотра результата. Если перебрать много признаков и оставить тот, где строка выделилась, «необычность» найдётся почти у любой строки.
Подгонка под типичное число переключений
Чтобы проверить этот вывод, строку меняли. Сначала получили строку с 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}\) и получим точную связь:
Доля отличается от 1/2 на перевес, делённый на \(2n\). Значит, доля может быть близка к 1/2, а перевес при этом оставаться большим: отклонение доли равно перевесу, делённому на \(2n\), и перевес не обязан уменьшаться при увеличении \(n\).
Честная монета, 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.
Казино, перевес и распределение числа орлов
01:33:43 — 01:41:40Небольшое преимущество шанса на длинной дистанции даёт устойчивый перевес. Распределение числа орлов в 20 бросках проверяется повторами эксперимента и точным подсчётом.
Случайное блуждание в игре
Пусть орёл приносит игроку +1, а решка −1. Тогда перевес после \(n\) бросков равен \(\text{орлы} - \text{решки} = 2 \cdot \text{орлы} - n\). Каждый бросок сдвигает точку вправо или влево, и такая траектория называется случайным блужданием.
Доля орлов и перевес связаны точно:
Поэтому доля может приблизиться к \(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\).
При \(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 бросков, делённое на число всех строк:
При меньшем числе повторов расхождение между опытом и точным значением становится заметнее, поэтому для проверки формулы нужно много повторов.
Серии, совпадения и проверка задач о монете
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)
Окно сдвигается по строке, и для каждого положения проверяется, выпали ли пять орлов подряд. Если хотя бы одно окно подошло, серия есть.
В одной истории серия из пяти орлов нашлась, в другой при длине 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. Результаты близки к расчёту для заданной модели честной монеты с независимыми бросками; это не проверяет честность реальной монеты.
Кубики: частоты, сетка пар и суммы
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}\).
Короткая серия показывает лишь малую часть возможных исходов, поэтому разброс ещё не доказывает нечестность кубика. Чтобы оценить такой разброс, нужна модель: сначала задаём шансы, затем смотрим, насколько типичны наблюдаемые частоты.
Сетка пар
Опыт с двумя кубиками описывается упорядоченной парой \((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%.
Причина в числе пар: к сумме 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 не появляется.
Тренажёр: кубики
- \(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}\).
- У двух независимых кубиков что вероятнее: хотя бы одна шестёрка или ровно одна?
Решение. Хотя бы одна шестёрка: \(\frac{11}{36} \approx 30.6\%\). Ровно одна: \(\frac{10}{36} \approx 27.8\%\). Событие «хотя бы одна» включает «ровно одну» и ещё пару (6,6). Симуляция дала 0.306 и 0.278.
- Замените копирование на
7 - firstи подпишите вторую модель «Дополняет до семи». Предскажите вид таблицы пар и частоту суммы.
Решение. Второй кубик всегда равен \(7 - \text{first}\), поэтому пары лежат на побочной диагонали: (1,6), (2,5), …, (6,1). Сумма всегда равна 7, её частота равна 1. Частоты граней второго кубика при этом остаются близкими к \(\frac{1}{6}\).
Пороги 7 и 12 для выбора между d12 и 2d6 разобраны в таблице выше.
Плейлист: повтор рядом, альбомы и итоги
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 |
Чем длиннее плейлист, тем больше мест для совпадения. Чем больше каталог, тем меньше шанс совпасть на каждом шаге. Эти выводы относятся к независимому выбору с возвращением.
Альбомы: процедура задаёт шансы
В библиотеке два альбома: A из двух песен и B из восьми. Сравним два способа выбора.
| Способ | Шанс, что звучит песня из A | Шанс отдельной песни A |
|---|---|---|
| Сначала альбом \(\frac12\), затем песня | \(\frac12\) | \(\frac12\cdot\frac12=\frac14\) |
| Одна из всех 10 песен | \(\frac{2}{10}\) | \(\frac{1}{10}\) |
В первом способе альбом получает половину выбора независимо от размера. Поэтому песня короткого альбома получает больший вес. Во втором способе все песни равноправны.
Если сделать альбомы по 5 песен, то в первом способе каждая песня получит \(\frac12\cdot\frac15=\frac1{10}\), как и во втором. Разница исчезает. Слова «выберем случайно» недостаточно: нужно описать процедуру.
Ответы на вопросы главы
- Равные вероятности не гарантируют равных частот в короткой серии. Короткая серия содержит случайный разброс, а частоты приближаются к \(\frac16\) только с ростом числа бросков.
- Суммы двух честных кубиков не равновозможны. Сумма 7 получается шестью парами, а сумма 2 — только парой (1, 1): шансы \(\frac{6}{36}\) и \(\frac{1}{36}\).
- Запрет соседнего повтора убирает повтор рядом по построению: выбор идёт из песен, кроме предыдущей. Перестановка убирает любой повтор за один проход.
Задания для самостоятельной работы
Перед запуском запишите ожидаемое направление изменения.
- Длина серии 3 вместо 5. Ответ: доля историй с серией вырастет. Короткая серия может начаться в большем числе мест.
- Кубик с неравными вероятностями. Ответ: частоты сойдутся к заданным весам, а не к \(\frac16\).
- Плейлисты из 10 и 100 песен одинаковой длины (20 прослушиваний). Ответ: для 10 песен шанс соседнего повтора около 0.865, для 100 — около \(1-0.99^{19} \approx 0.17\). Большой каталог даёт меньше повторов.
- Дополнительно. Какой шанс, что звучит песня альбома A? Ответ: \(\frac12\) при выборе альбома, затем песни, и \(\frac15\) при выборе из всех десяти.
Ключевые цитаты
«Вероятность идёт от того, что у нас есть какая-то модель мира, и она может порождать какие-то данные. Статистика идёт в обратную сторону. У нас есть данные, и мы по ним пытаемся понять, из какого распределения, из какой модели они были получены.»
«Частота 14 на 20, то есть 0,7, ещё не доказывает, что шанс орла равен 0,7.»
«Когда нас что-то удивляет в жизни, сразу стоит себя спрашивать: а сколько было возможностей его заметить?»
«Почему надо всегда сохранять сид? Потому что если его не сохранили, это не значит, что его не было. Он есть, просто вы его не знаете, и вы не сможете воспроизвести результаты.»
«Миллион опытов не исправит неправильные правила.»
Глоссарий
Вопросы для самопроверки
-
Что такое пространство исходов и событие? Приведите пример для одного броска монеты.
Показать ответ
Пространство исходов \(\Omega\) — все возможные результаты опыта. Для монеты \(\Omega=\{O,P\}\). Событие — подмножество исходов, например \(A=\{O\}\) означает «выпал орёл». -
В чём разница между вероятностной задачей и статистической задачей?
Показать ответ
В вероятностной задаче модель известна, и мы считаем, какие данные она даст, например, какие результаты дадут 20 бросков честной монеты. В статистической задаче данные известны, и мы пытаемся понять, какая модель их породила. -
Почему 14 орлов из 20 бросков не доказывают, что шанс орла равен \(0.7\)?
Показать ответ
Частота \(14/20=0.7\) — результат случайного опыта, и её разброс может быть большим. Поэтому из одной частоты нельзя сделать вывод о точном значении вероятности, нужен учёт случайного разброса. -
В чём отличие частотного и байесовского взгляда на вероятность?
Показать ответ
Частотный взгляд связывает вероятность с долей успехов в длинной серии повторений. Байесовский взгляд выражает уверенность с учётом доступной информации, и новые сведения могут изменить оценку. -
Игра до трёх побед прервана при счёте 2:1, банк 100. Как разделить банк по шансам победить?
Показать ответ
Если игра продолжилась бы, А выигрывает, набрав три победы, в трёх из четырёх равновозможных продолжений: АА, АB, ВА. Поэтому А получает \(75\), Б — \(25\), то есть \(\frac{3}{4}\cdot 100\) и \(\frac{1}{4}\cdot 100\). -
Чему равна вероятность выпадения десяти орлов подряд у честной монеты и что она доказывает?
Показать ответ
Для заранее выбранных десяти независимых бросков \(P=(1/2)^{10}=\frac{1}{1024}\). Эта серия редка, но возможна, и сама по себе не доказывает, что монета нечестная. -
Сколькими способами три броска монеты дают ровно один орёл, и чему равна вероятность? Чему равна вероятность хотя бы одного орла?
Показать ответ
Подходят OPP, POP и PPO, то есть 3 из 8 равновозможных исходов: \(P=\frac{3}{8}\). Хотя бы один орёл удобно считать через дополнение: \(1-\frac{1}{8}=\frac{7}{8}\). -
Почему шансы заранее выбранной строки из шести орлов и заранее выбранной конкретной смешанной строки одинаковы, но выглядят по-разному?
Показать ответ
Шанс каждой конкретной строки равен \(\frac{1}{64}\), поэтому выбранные заранее строки равновероятны. Но шесть орлов — один заметный паттерн, тогда как подходящих смешанных строк очень много, и мы не выделяем конкретную смешанную строку как особую. -
Для честного кубика чему равны \(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 для d12 и для суммы 2d6. Какой кубик выгоднее и почему?
Показать ответ
У d12 шанс \(\frac{3}{12}\), у 2d6 — \(\frac{6}{36}\), поэтому выгоднее d12. Два кубика чаще дают середину суммы, и при высоком пороге этот выигрыш не помогает. При пороге не меньше 7 выгоднее 2d6: \(\frac{21}{36}\) против \(\frac{6}{12}\). -
Почему у выбора «сначала альбом, потом песня» другие шансы для песен, чем у выбора из всей библиотеки?
Показать ответ
Песня короткого альбома (из двух) получает шанс \(\frac{1}{2}\cdot\frac{1}{2}=\frac{1}{4}\), песня длинного (из восьми) — \(\frac{1}{2}\cdot\frac{1}{8}=\frac{1}{16}\). При выборе из всех десяти песен каждая получает \(\frac{1}{10}\). Процедура задаёт шансы, поэтому её нужно описать заранее. -
Почему в 20 выборах из 10 песен вероятность хотя бы одного соседнего повтора около 86.5%?
Показать ответ
Без соседнего повтора каждый следующий выбор должен отличаться от предыдущего: 9 вариантов из 10. Вероятность отсутствия повтора равна \((9/10)^{19}\), поэтому повтор есть с вероятностью \(1-(9/10)^{19}\approx 0.865\). -
Почему seed нужно сохранять и почему одна фиксация в начале важнее повторной установки перед каждым бросанием?
Показать ответ
Seed задаёт состояние генератора, поэтому тот же алгоритм с тем же seed даёт ту же последовательность, и результаты можно воспроизвести. Если задавать тот же seed перед каждым броском, будем повторять первый результат, а не получать новую последовательность. -
Почему вероятность пяти орлов в первых пяти бросках (\(1/32\)) и хотя бы одной серии из пяти орлов среди ста бросков (около 81%) отличаются так сильно?
Показать ответ
В первом случае место серии задано заранее, поэтому вероятность \(\frac{1}{32}\). Во втором случае подходит любое из 96 окон длины пять, поэтому шанс появления серии где-нибудь в истории гораздо выше. Окна пересекаются, и их вероятности нельзя просто сложить. -
Что такое случайное блуждание в задаче с монетой и чем доля орлов отличается от перевеса орлов над решками?
Показать ответ
Орёл даёт шаг +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 инструментАрхиваторы как пример сжатия информации через поиск избыточности, по аналогии с человеческим восприятием паттернов.
-
Хабр ссылкаРесурс, где лектор обещал популярные статьи о генераторах случайных чисел.