Рандомайзер вариантов: случайный выбор из списка и выбор победителя
Инструмент для организации конкурсов и розыгрышей
Рандомайзер обеспечивает честный выбор победителей: результат выбирает криптографически стойкий генератор случайных чисел (Web Crypto API в вашем браузере). Подкрутить исход в свою пользу нельзя, но и доказать это посторонним обычный рандомайзер не может — расчёт идёт у вас на устройстве, а скриншот подделывается. Если результат нужно предъявить участникам конкурса, проводите розыгрыш с протоколом: список фиксируется до жеребьёвки, случайность даёт независимый маяк drand, и любой желающий пересчитает результат сам.
Выбор происходит мгновенно, без перезагрузки страницы. Режим «без повторов» даёт каждому варианту не больше одного места — как в настоящем розыгрыше. Кнопка «Удалить дубли» убирает повторяющиеся строки, чтобы у каждого участника были равные шансы, а режим «убирать победителей» позволяет разыгрывать призы по очереди: выпавший вариант исключается из списка. Каждый розыгрыш записывается в протокол, а ссылкой на результат можно поделиться с участниками.
Как выбрать победителя розыгрыша из списка
- Вставьте список участников — по одному на строке (имена, ники, номера).
- Нажмите «Удалить дубли», если один участник мог попасть в список дважды.
- Укажите количество победителей — сервис покажет, какое место занял каждый.
- Нажмите «Выбрать» — победители определяются мгновенно и честно.
- Скопируйте результат или отправьте участникам ссылку на итог розыгрыша.
Выбор из двух вариантов
Не можете определиться? Рандомайзер помогает сделать выбор онлайн между двумя вариантами: «да или нет», «орёл или решка», пойти или остаться. Впишите оба варианта — или подставьте готовую пару одной кнопкой — и сервис случайно выберет один из двух. Так же легко выбрать из нескольких вариантов: трёх, пяти, десяти — просто добавьте строки.
Жеребьёвка, имена и не только
Сервис подходит для любой жеребьёвки: случайный выбор имени из списка, порядок выступлений, кто сегодня дежурит, какой фильм смотреть. Для командных жеребьёвок есть отдельный инструмент «Разделить на команды», для наглядных розыгрышей — «Колесо фортуны», а случайные числа выдаёт генератор случайных чисел.
Как это устроено: почему выбор нельзя подстроить
Большинство рандомайзеров в интернете генерируют число через Math.random() —
это быстрый, но не криптографический генератор (в браузерах на движке V8 внутри —
xorshift128+). Он не предназначен для честных розыгрышей: спецификация JavaScript вообще
не гарантирует непредсказуемость конкретной реализации. Для конкурса с реальными призами
этого недостаточно.
Наш сервис использует crypto.getRandomValues() — Web Crypto API,
криптостойкий генератор случайных чисел (CSPRNG), берущий энтропию из операционной
системы. Тот же примитив браузер использует для ключей шифрования при TLS-соединении
и в менеджерах паролей. На сервере (для клиентов без JavaScript) — аналог на PHP,
random_int(), тоже криптостойкий, а не обычный rand().
Проблема modulo bias — и как мы её убираем
Наивный способ получить число от 0 до N обычно пишут как random() % N.
Если 2³² не делится на N без остатка (а почти никогда не делится), часть значений
выпадает на один «лишний» раз чаще остальных — результат перестаёт быть строго
равновероятным. Чем меньше N относительно 2³², тем перекос незаметнее на глаз, но
он есть всегда — а в честной жеребьёвке это недопустимо.
Мы используем rejection sampling: если сырое случайное число попадает в «неровный хвост» диапазона, оно отбрасывается и генерируется заново — так что каждый исход гарантированно равновероятен. Вот реальный код с этой страницы:
// равномерное целое [0, max) на crypto.getRandomValues, rejection sampling против bias
function cryptoInt(max) {
var buf = new Uint32Array(1), limit = Math.floor(4294967296 / max) * max;
do { crypto.getRandomValues(buf); } while (buf[0] >= limit);
return buf[0] % max;
}
Перемешивание — алгоритм Фишера–Йейтса
Кнопка «Перемешать» и режим «без повторов» используют алгоритм Фишера–Йейтса (Fisher–Yates shuffle) — единственный широко признанный способ получить математически равномерную случайную перестановку списка. В отличие от популярного, но статистически смещённого приёма «отсортировать список по случайному числу», Фишер–Йейтс проходит список с конца и на каждом шаге меняет текущий элемент местами со случайным из ещё не обработанных — так что все перестановки списка равновероятны.
Частые вопросы
Это честный выбор? Можно ли подстроить результат?
Нет, подстроить нельзя. Победителя выбирает криптостойкий генератор случайных чисел — тот же класс алгоритмов, что используется для создания паролей и ключей шифрования. У каждой строки списка равные шансы.
Сколько вариантов можно добавить?
Практически без ограничений — списки в тысячи строк обрабатываются мгновенно, потому что выбор происходит прямо в вашем браузере.
Что делать с повторами в списке?
Нажмите «Удалить дубли» — останутся только уникальные строки, у всех равные шансы. Если оставить повторы, у варианта, который встречается чаще, шанс выше — иногда это нужно специально (например, дополнительные билеты за репост).
Сохраняется ли мой список?
Список и настройки автоматически сохраняются в вашем браузере (localStorage) и никуда не отправляются. Протокол розыгрышей тоже хранится только у вас.
Войдите, чтобы оставить отзыв или комментарий