Розыгрыш призов колесом: порядок выпадения
Для розыгрыша — список из 4 пунктов: колесо делится на 4 равных сектора по 90°, шанс каждого — 25 %. Нажмите «Крутить» и не трогайте поле со списком: победитель выбирается случайным числом в браузере, а угол остановки считается так, чтобы под указателем оказался именно он. Выпавший пункт убирается кнопкой «Убрать победителя» — порядок розыгрыша получается честным, без повторов. Список сохраняется в адресе страницы: ссылку можно отправить участникам.
Секторы розыгрыша: 4 пункта по 90°
| Вариант | Сектор на колесе | Шанс выпасть | Порядок розыгрыша |
|---|---|---|---|
| Приз №1 | 90° (сектор 1) | 25 % | Ход 1 |
| Приз №2 | 90° (сектор 2) | 25 % | Ход 2 |
| Приз №3 | 90° (сектор 3) | 25 % | Ход 3 |
| Утешительный приз | 90° (сектор 4) | 25 % | Ход 4 |
Рассчитано по методике инструмента «Колесо фортуны онлайн: рандомайзер из своего списка».
Как считаем
Сектор = 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 знаков на подпись: дальше секторы становятся нечитаемыми.