Колесо фортуны онлайн

Впишите свои варианты и крутите колесо — рандомайзер честно выберет один. Удобно с телефона: коснитесь колеса, чтобы запустить.

Готовые наборы:

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

  1. Впишите варианты — по одному в строке (имена участников, блюда, задания, «да/нет»).
  2. Нажмите «Крутить» в центре колеса или просто коснитесь его.
  3. Колесо остановится на случайном варианте — это и есть результат.

Готовые наборы («да/нет», «орёл/решка», числа, дни недели) подставляются одной кнопкой. Включите «убирать выпавший вариант», чтобы разыгрывать призы по очереди без повторов.

Честный ли результат

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

Где пригодится колесо фортуны

Как это устроено: почему колесо нельзя подкрутить

Сначала определяется победивший сектор — с помощью crypto.getRandomValues(), криптостойкого генератора случайных чисел (CSPRNG). Это тот же класс алгоритмов, что используется браузером для ключей шифрования и генерации паролей — в отличие от обычного Math.random(), быстрого, но предсказуемого генератора, не рассчитанного на честные розыгрыши.

Чтобы результат был равновероятным для любого числа секторов, применяется rejection sampling: если сырое случайное число попадает в «неровный хвост» диапазона (когда 2³² не делится на количество секторов без остатка), оно отбрасывается и генерируется заново — иначе часть вариантов выпадала бы чуть чаще других. Вот реальный код с этой страницы:

function cryptoInt(max) {
    var buf = new Uint32Array(1), limit = Math.floor(4294967296 / max) * max;
    var c = window.crypto || window.msCrypto;
    do { c.getRandomValues(buf); } while (buf[0] >= limit);
    return buf[0] % max;
}

Номер победившего сектора вычисляется этой функцией до начала анимации — вращение только показывает уже определённый результат. Внутри самого сектора точка остановки ещё немного «дрожит» обычным Math.random() — это чисто визуальный эффект, чтобы колесо не тормозило всегда ровно по центру сектора. На то, какой вариант выиграл, эта дрожь не влияет: сектор уже выбран криптостойким генератором на шаг раньше.

Другие инструменты рандомайзера

Отзывы и комментарии

Войдите, чтобы оставить отзыв или комментарий

Я Войти через Яндекс

Пока нет комментариев. Будьте первым!