Перейти к основному содержимому
Tooletto

Колесо решений

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

  • Файлы никогда не покидают ваше устройство
  • Бесплатно, без регистрации
  • Без водяных знаков
  • Работает офлайн после загрузки
Loading tool…

Как пользоваться: колесо решений

  1. 1

    Добавьте варианты

    По одному на строку — имена, блюда, задачи, что угодно.

  2. 2

    Крутаните колесо

    Колесо случайным образом выбирает один вариант, используя криптографическую случайность.

  3. 3

    Уберите победителя или крутите снова

    При желании исключайте победителя из списка, чтобы никто не был выбран дважды.

Почему победитель определяется ещё до того, как колесо начинает крутиться

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

Почему победителя выбирает отбраковка (rejection sampling), а не простое деление по модулю

Самый распространённый способ превратить случайное число в «выбор одного из N вариантов» — взять случайное целое число и вычислить его остаток от деления на N, но если N не делит ровно тот диапазон, из которого было получено случайное число, это вносит небольшое, но вполне реальное смещение, при котором некоторые варианты становятся на долю процента более вероятными, чем другие, — исключительно из-за того, что деление не выходит ровным. Отбраковка полностью избегает этой проблемы: инструмент вытягивает случайное значение, и если оно попадает в тот крошечный неравномерно распределённый остаток, отбрасывает его и вытягивает заново, повторяя это до тех пор, пока значение не попадёт в равномерно делимую часть диапазона. В итоге у каждого варианта получается вероятность, которая равна другим не приблизительно, а абсолютно точно — это настоящая гарантия честности, а не её близкое приближение.

Выбор между вращением с возвратом и без возврата

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

Как сохранить читаемость подписей по мере роста списка вариантов

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

Часто задаваемые вопросы

Результат действительно случаен?

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

У каждого варианта одинаковые шансы?

Абсолютно одинаковые. Выбор использует метод отбраковки (rejection sampling), а не деление по модулю, поэтому ни один вариант не является даже на долю процента более вероятным, чем другой — смещение, которое вносит наивная реализация, небольшое, но вполне реальное.

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

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

Сколько вариантов можно добавить?

На практике — до примерно 50, пока подписи не станут нечитаемыми на колесе. На саму случайность количество вариантов никак не влияет.

Частые задачи: колесо решений