Генераторы · случайностьГенератор случайных чисел и жребий
Случайное число, жребий из списка, деление на команды, случайный порядок, кубики и монетка. Криптостойкая случайность, результат можно проверить — и всё в браузере.
Список участников, seed и результаты не уходят на сервер
при одном числе повторяться и сортировать нечего — обе настройки включатся, когда чисел станет больше
Быстрый диапазон
d4 · d6 · d8четыре, шесть и восемь граней — обычные игральные кости настольных игр
d10 · d12десять и двенадцать граней; d10 часто бросают парой
d20двадцать граней — основная кость D&D и подобных систем
d100процентник: сто граней, бросок читается как проценты
Формат — количество, буква d, число граней и модификатор: 3d6+2, d20, 2d10-1. Слово «монетка» бросает монету — «Орёл» или «Решка».
Результат
Нажмите «Разыграть» — результат появится здесь
Оговорка
Инструмент для жеребьёвок, игр и учебных задач. Он не предназначен для азартных игр и денежных лотерей.
Прогоны считаются в браузере: мы гоняем тот же сэмплер и сверяем частоты с теорией.
История сессии
Пока пусто — нажмите «Разыграть». История живёт только в этой вкладке.
02
Честный розыгрыш
обещание → розыгрыш → проверка
Seed розыгрыша
Поле пустое: розыгрыш пойдёт от криптографического источника. Это честно, но проверить такой розыгрыш нельзя — воспроизвести его не сможет никто, включая вас.
Отпечаток SHA-256 · seed + ввод
—
Розыгрыша ещё не было — отпечаток можно объявить прямо сейчас.
Как проверить
01До розыгрыша
Объявите отпечаток: скиньте эту строку в чат или под пост. Она зависит от seed и от списка участников — подменить их после этого незаметно уже нельзя.
02Розыгрыш
Нажмите «Разыграть». Номер розыгрыша прибавляется к seed, поэтому каждое нажатие даёт новый результат — и каждый из них воспроизводим.
03После
Опубликуйте seed розыгрыша вместе с номером и протокол. В протоколе есть всё: режим, ввод, отпечаток и результат.
04Проверка
Любой открывает эту страницу, вводит тот же seed, тот же список и тот же номер — и получает тот же результат. Совпало — розыгрыш не переигрывали.
03
О случайности
Криптостойкая случайность
Основа
crypto.getRandomValues
Числа берутся из криптографического источника браузера, а не из Math.random(), последовательность которого предсказуема при известном состоянии генератора.
Без перекоса
Честность
rejection sampling
Наивный остаток от деления слегка чаще выбирает начало диапазона — на жребии это значит, что первые в списке выигрывают чаще. Неподходящие значения отбрасываются, и шансы строго равны.
Seed и повторяемость
Проверка
seed#3 = тот же результат
Розыгрыш идёт от seed и номера попытки. Зная их и список, любой повторит розыгрыш и получит тот же итог — результат проверяется без доверия к нам.
Обещание до розыгрыша
Протокол
SHA-256 отпечаток
Объявите отпечаток заранее, а seed — после. Так видно, что ни список, ни seed не подменили задним числом; у конкурентов это делает сервер, здесь — браузер.
Без повторов
Режимы
5 из 36
Можно исключать уже выпавшее: для лотерейных наборов, очереди выступлений или раздачи призов, где один человек выигрывает только раз.
Приватность
Локально
без сервера
Участники, seed и результаты остаются во вкладке. Ничего не отправляется и не сохраняется — история розыгрышей исчезает при обновлении страницы.
04
Частые вопросы
Укажите «от» и «до», сколько чисел нужно, и при необходимости включите «без повторов» — тогда одно и то же число не выпадет дважды. Границы можно задавать отрицательные, а стрелками рядом с полем значение меняется на единицу, с зажатым Shift — на десять. Числа берутся из криптографического источника браузера, а не из `Math.random()`.
Вставьте участников по одному в строке, укажите, сколько выбрать, и нажмите «Разыграть». Если розыгрыш нужно будет доказать, объявите отпечаток заранее, а seed — после: тогда любой повторит розыгрыш и получит тот же результат. Тумблер «убирать выбранных» пригодится, когда призов несколько, а один человек может выиграть только раз.
Откройте режим «Кубики» и напишите нотацию: `d6` — одна шестигранная кость, `2d6` — две, `3d6+2` — три с прибавкой к сумме. Так же работают `d4`, `d8`, `d10`, `d12`, `d20` и `d100` — весь набор настольных игр и D&D. Настоящие игральные кости не нужны: рядом с числом рисуется сама грань шестигранной, а слово «монетка» вместо нотации даёт «Орёл» или «Решку». Есть показ во весь экран — чтобы бросок видел весь стол.
Да, и для этого не нужен наш сервер. Результат определяется тремя вещами: seed, номером розыгрыша и вводом. Отпечаток SHA-256 от seed и списка объявляется до розыгрыша — он доказывает, что их не подменили. После розыгрыша публикуется seed, и любой вводит те же данные у себя и получает тот же итог.
`Math.random()` — псевдослучайный: зная состояние генератора, следующие значения можно предсказать. Здесь берётся `crypto.getRandomValues`. Вторая разница важнее: наивное «остаток от деления» слегка чаще выбирает начало диапазона, поэтому неподходящие значения отбрасываются, и шансы строго равны. Проверить это можно прямо на странице — блок «Проверка честности выборки» гоняет сто тысяч прогонов и показывает χ².
Нет. Список, seed и результаты живут только во вкладке браузера: мы их не отправляем и не сохраняем — ни на сервере, ни в хранилище браузера. История розыгрышей исчезает при обновлении страницы, и это осознанно: сохранять чужие списки участников мы не хотим.