Подбросить монету

Flip Me!

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

Built by Bob Article by Lace QA by Ben Shipped

Ratings & Reviews

Rate this tool

Sign in to rate and review this tool.

Loading reviews…

Что такое подбрасывание монеты на самом деле

Подбрасывание монеты — это исходный случайный бит. Орёл или решка, 50 на 50, исход решается за время, пока монетка крутится в воздухе. Так разрешали споры и тянули жребий ещё римляне — они называли это navia aut caput, «корабль или голова», по картинке на бронзовых монетах. Математика с тех пор не изменилась.

Изменилось то, что монеты у тебя в кармане, скорее всего, нет. Цифровое подбрасывание должно симулировать тот же честный непредсказуемый исход 50/50 без всякой физической монеты. Звучит просто. На самом деле почти всегда нет — большинство программ использует генераторы случайных чисел, которые на самом деле не случайны: это последовательности, которые выглядят случайными, пока ты не знаешь формулу.

Этот «Подбросить монету» использует crypto.getRandomValues() — криптографически стойкий генератор случайных чисел браузера. Тот же источник, из которого банки берут токены сессий. Каждое подбрасывание берёт свежий байт из энтропийного пула операционной системы и сводит его к одному биту. Никакого seed, никакого паттерна, никакого способа предсказать следующий результат по предыдущим. Настолько честно, насколько вообще бывает честная монета.

Как пользоваться

Открой страницу «Подбросить монету» и нажми кнопку. Всё.

  1. Нажми кнопку «Подбросить» (или пробел)
  2. Смотри результат: орёл или решка
  3. Нажми ещё — счётчик ведёт общий итог
  4. Сбрось счётчик, когда захочешь начать заново

Итог удобен, если ты сомневаешься, действительно ли подбрасывания сбалансированы. После 100 подбрасываний должно получиться что-то близкое к 50/50 — но не ровно 50/50. Почему — сейчас расскажу.

crypto.getRandomValues против Math.random — почему это важно

В JavaScript два способа получить случайное число, и они не равны.

Math.random() — псевдослучайный генератор. Он выдаёт детерминированную последовательность из скрытого внутреннего состояния. Последовательность выглядит случайной, и для большинства задач — рандомной анимации, случайного цвета для графика — этого хватает. Но она не непредсказуема. Две страницы с одинаковым начальным состоянием выдадут одни и те же «случайные» числа. И вывод тонко смещён — это заметно только на больших масштабах.

crypto.getRandomValues() тянет байты из криптографически стойкого пула энтропии операционной системы. На современном железе этот пул кормят тепловой шум, движения мыши, тайминги сетевых пакетов и ещё с полдюжины физических источников. Внутреннего состояния, которое могло бы утечь, нет; последовательности, которую можно предсказать, тоже нет. Это тот же источник, из которого браузер берёт ключи TLS.

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

Если хочешь проверить сам, открой консоль браузера на странице и выполни crypto.getRandomValues(new Uint8Array(1)). Получишь число от 0 до 255. Мы берём это число, проверяем чётное оно или нечётное (или, что то же самое, младший бит — 0 или 1), и этот бит решает: орёл или решка.

Проблема серий: почему 10 подбрасываний редко выглядят «случайно»

Эксперимент, который большинство людей понимает неправильно. Подбрось монету 10 раз. Запиши результаты. Покажи другу. Спроси: «это похоже на случайное?»

Если последовательность О Р О Р О О Р О Р Р, большинство говорит «да». Если О О О О Р О О Р Р Р, большинство говорит «нет — слишком много орлов подряд, это не случайно». Обе последовательности одинаково вероятны. У обеих одинаковое соотношение орлов и решек. Вторая просто выглядит менее случайно, потому что люди сильно недооценивают, как часто в реальных случайных данных встречаются серии.

Пример. Мы подбросили монету десять раз. Вот реальная последовательность:

О, О, Р, О, О, О, Р, Р, Р, О

Шесть орлов, четыре решки. Самая длинная серия орлов: 3 подряд (броски 4–6). Самая длинная серия решек: 3 подряд (броски 7–9).

Выглядит подтасовкой, верно? Нет. Вероятность увидеть хотя бы одну серию длиной 3 и больше в 10 бросках честной монеты — около 82%. В большинстве десятибросковых последовательностей такая серия есть. Если её нет, вот это как раз необычный исход.

Примерные вероятности увидеть разные максимальные длины серий за 10 бросков:

Самая длинная серия одной стороны за 10 бросковПримерная вероятностьКак это выглядит
1 подряд (идеальное чередование, ОРОРОРОРОР)≈ 0,2%Настолько маловероятно, что у честной монеты почти не встречается
Максимум 2 подряд≈ 7%Редко; человеку покажется «очень случайным»
Максимум 3 подряд≈ 38%Обычное дело — типичная «выглядит случайно» последовательность
4 подряд хотя бы раз≈ 45%Почти 50/50; для человека выглядит «подтасовкой», но это не так
5 и больше подряд хотя бы раз≈ 22%Примерно 1 из 5 десятибросковых последовательностей; кажется явной подтасовкой
6 и больше подряд хотя бы раз≈ 11%1 из 9; на удивление часто

Вывод: длинные серии — не свидетельство сломанной монеты. Они свидетельство нормальной монеты. Если ты подбросишь 100 раз и не получишь ни одной серии из 5+ ни в одну сторону, вот это будет удивительно.

Ошибка игрока

Ты выкинул орла четыре раза подряд. Какова вероятность, что следующий — решка?

50%. Та же, что для каждого предыдущего. Монета не помнит предыдущих исходов. Она не «должна» тебе решку. Это ошибка игрока — интуитивное убеждение, что прошлые случайные исходы влияют на будущие, — и это одна из самых дорогих когнитивных ошибок человека. На ней живут казино.

Каждое подбрасывание независимо. Вероятность ООООО (пять орлов подряд) в начале последовательности — 1/32. Но вероятность ещё одного орла после уже выпавших ОООО — всё равно 1/2. Предыдущие броски случились. На следующий они не влияют.

Это важно для честного использования. Если ты подбрасываешь, чтобы принять решение — пицца или суши? — не кидай заново, пока не выпадет нужный вариант. Это полностью убивает смысл. Кинул один раз — прими результат.

Для чего реально используют подбрасывание монеты

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

  • Выбор между двумя вариантами. Пицца или суши. Фильм A или фильм B. Классика, и до сих пор лучшее применение. Два исхода, равные веса, без перегруза мыслей.
  • Снятие собственного предвзятого выбора. Если ты подбросил монету и сразу расстроился результату, ты узнал что-то о себе — ты уже знал, какой вариант хочешь. Подбрасывание вытаскивает наружу предпочтения, в которых ты не признавался.
  • Игры и спорт. Розыгрыш мяча в футболе, подача в теннисе, первый выбор на драфте. Монета решает, кто ходит первым, практически во всех соревновательных структурах, придуманных до компьютеров.
  • Случайная выборка. «Кинь монету — если орёл, включи эту строку в выборку». Быстрый способ взять случайные 50% чего угодно.
  • Обучение теории вероятностей. Подбрасывания монеты — самый чистый учебный пример независимых испытаний, матожидания и закона больших чисел. Сделай сотню и смотри, как соотношение сходится.

Для решений с более чем двумя вариантами понадобится другой инструмент. Бросок кубиков справится с 4, 6, 8 или 20 исходами. Случайный выбор имени возьмёт один элемент из списка. Перемешать список расставит весь список в случайном порядке.

А как насчёт «лучше из трёх»?

Если одно подбрасывание кажется слишком резким, «лучше из трёх» снижает разброс. Три броска, и кто первый дойдёт до двух — тот и выиграл. Вероятность победы каждой стороны всё равно 50% — монета та же самая, — но диапазон возможных исходов уже.

Математика: «лучше из трёх» — это «первый, кто наберёт 2 орла или 2 решки в серии независимых бросков». Любая сторона выигрывает, как только получает второй. Большинство серий заканчивается за 2 броска (вероятность 50%), остальные — за 3 (вероятность 50%).

Пример: вы с другом оба хотите последний кусок пиццы. Один бросок — ты примешь результат, но, возможно, побурчишь. «Лучше из трёх» ощущается честнее, потому что нельзя проиграть на первом же броске. Ожидаемый результат тот же; ощущение честности выше. Бери что нравится — оба варианта математически в порядке.

Похожие инструменты случайности

«Подбросить монету» — простейший случай «мне нужен случайный исход прямо сейчас». Несколько Microapp для случаев побогаче:

  • Бросок кубиков — для более чем двух исходов. Брось любое количество кубиков на 2, 4, 6, 8, 10, 12, 20 или 100 граней.
  • Перемешать список — вставь список, получи его в случайном порядке. Подходит для очерёдности докладов, очереди или чего угодно, что нужно расставить честно.
  • Случайный выбор имени — взять один элемент из списка. Кейс «выбрать победителя».
  • Генератор команд — разбить состав на сбалансированные случайные команды. Подходит для спорта, учебных групп или класса.
  • Генератор паролей — использует тот же криптографический источник случайности для вывода уровня настоящей безопасности.

Частые вопросы

«Подбросить монету» действительно 50/50?

Да. Каждое подбрасывание берёт случайный байт из crypto.getRandomValues() и проверяет, чётный он или нечётный. Это криптографически стойкий генератор браузера — тот же, который генерирует TLS-ключи сессии. Смещение было бы заметно на миллионах бросков; ты его не найдёшь.

Выпало 7 орлов подряд. Монета сломана?

Нет. Вероятность любой конкретной семибросковой последовательности (включая ОООООО) — 1/128, около 0,8%. Если бросишь 100 раз, такая серия где-то в последовательности почти наверняка встретится. Серии не значат, что монета смещённая; они значат, что монета нормальная.

Почему мой счёт уходит от 50/50?

В случайных последовательностях бывает дрейф случайного блуждания. После 100 бросков соотношение обычно не 50/50, а где-то в районе 40-х и 50-х на каждую сторону. После 10 000 бросков оно ближе в абсолюте (скажем, 5021 против 4979), но абсолютный разрыв всё равно может быть в десятки. Сходимость идёт по пропорции, не по абсолютному числу. Это закон больших чисел, и работает он медленно.

Можно ли подбрасывать «утяжелённую» монету (60/40 или 70/30)?

«Подбросить монету» по замыслу — только честная. Для взвешенных выборов используй Бросок кубиков с кубиком побольше и задай диапазоны (например, кинь d10; 1–6 — вариант A, 7–10 — вариант B, это 60/40). Встраивание «утяжелённой монеты» сюда размыло бы то, что делает инструмент. Один Microapp — одно дело.

Работает ли «Подбросить монету» офлайн?

Да, после загрузки страницы. Генератор случайных чисел работает полностью в твоём браузере; ничего с устройства не уходит. Никаких сетевых вызовов, серверов и трекинга. Открой один раз, отключи Wi-Fi, продолжай бросать.

Можно использовать это для турнирной сетки или важного решения?

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

Почему не использовать обычную монету?

Используй, если она есть. Физические монеты в порядке по честности — с маленькой оговоркой: исследования показывают, что реальные монеты слегка смещены приземляться на ту же сторону, с которой стартовали (примерно 51/49), из-за того, как они колеблются в воздухе. У этой «Подбросить монету» нет «стартовой стороны», так что она чуточку честнее физической. На 10 бросках разницы ты не заметишь.