Методика: Колесо фортуны онлайн: рандомайзер из своего списка
Страница расчёта: открыть инструмент
Формула
Сектор = 360° ÷ n, где n — число вариантов; шанс варианта = 1 ÷ n, то есть 100 % ÷ n. Победитель: i = floor(r × n), где r — случайное число из [0, 1). Угол остановки: φ = 360° × k − (i × сектор + сектор ÷ 2 + δ), где k — число полных оборотов (4–7), δ — случайный сдвиг внутри сектора до ±35 % его ширины. Сектор под указателем при повороте φ: floor((−φ mod 360) ÷ сектор).
Как выполняется расчёт
- Впишите варианты: каждый с новой строки, через запятую или через точку с запятой.
- Нажмите «Крутить» или щёлкните по колесу — оно прокрутится и остановится на победителе.
- Уберите выпавший вариант кнопкой «Убрать победителя и крутить снова» или крутите заново.
- Скопируйте ссылку кнопкой «Ссылка на этот список»: варианты сохранены в адресе страницы.
Ограничения и допущения
- Секторы всегда равные: весов и «шансов» у вариантов нет, поэтому 100 % ÷ n — точная вероятность каждого. Если нужны неравные шансы, впишите вариант несколько раз.
- Источник случайности — Math.random() браузера. Он даёт равномерное распределение, но не является криптографическим: для жеребьёвки и спора этого достаточно, для розыгрыша призов с денежным призом нужен независимый источник — генератор паролей на этой платформе берёт crypto.getRandomValues.
- Победитель определяется до начала прокрутки, а колесо лишь показывает результат: угол остановки считается так, чтобы выпавший сектор оказался под указателем. Поэтому «сила броска» ничего не решает.
- Звук тика синтезируется в браузере и включается после первого нажатия — до жеста пользователя браузеры звук не дают. Тик звучит не чаще 20 раз в секунду: на старте колесо проходит сектор за 15 мс, и без ограничения это был бы треск. Если Web Audio недоступен, колесо просто крутится молча.
- Список сохраняется в hash-фрагменте адреса, а не в query-параметрах: такие ссылки не создают дублей страницы для поисковых систем. Ограничение — 40 вариантов и 40 знаков на подпись: дальше секторы становятся нечитаемыми.