Към основното съдържание
LibraTool logoLibraTool

Хвърляне на монета и въртене на колело — безплатно

Обърнете виртуална монета, завъртете поддаваща се на персонализиране колело или произволно изберете от список с опции. Използва криптографски безопасен генератор на случайни числа в браузъра ви — не е проверяемо публично теглене, затова избягвайте регулирани състезания.

Работи офлайн след зареждане

🔒 И трите използват криптографски безопасния генератор на случайни числа на браузъра ви: резултатът се избира първи, след което се анимира — монетата е истински 50/50, колелото се завърта до вече избрания резултат, а избирачът е безпристрастен. Нищо не напуска вашето устройство. Това е справедливо за обикновена употреба, но не е проверяемо публично теглене, затова избягвайте регулирани състезания или решения от висока стойност.

Често срещани употреби

  • Обърнете монета, за да вземете решенияИзползвайте справедлив виртуален хвърляне на монета за бързи, безпристрастни решения, когато ви е теча между две опции.
  • Завъртете колелото за произволни назначения на тимИзползвайте настраивано колело, за да произволно назначите членове на екипа на задачи, роли или групи.
  • Случайна селекция на ученици за учебни стаиИзползвайте колелото или селектора на опциите за произволно извикване на ученици, назначаване на групи или избор на доброволци.
  • Виртуално хвърляне на монета за спортОбърнете справедлива монета, за да определите страни на отборите, първо притежание, ред на сервирането или други спортни решения.
  • Случайна селекция за раздаванияИзберете случайна награда от списък на записи, като използвате селектор на опциите — прозрачно и справедливо.

Как работи

И трите режима — хвърляне на монета, въртящо се колело и избор на опция — използват вградения в браузъра Web Crypto API (crypto.getRandomValues), за да генерират печелившия резултат, след което карат анимацията изцяло на страна на клиента с CSS трансформации и requestAnimationFrame. Сървър не участва в нито един момент.

  1. 1
    Web Crypto избира победителя
    Преди да започне анимация, crypto.getRandomValues попълва Uint32Array с криптографски случайно 32-битово цяло число. Операция по модул го картографира към броя на опциите (2 за ези/тура, N за колелото или избора), така че всеки резултат има точно еднаква вероятност.
  2. 2
    Ъгълът на въртене се изчислява така, че да попадне на резултата
    За монетата кодът изчислява най-краткото допълнително въртене (върху текущия натрупан ъгъл), което завършва с правилната страна нагоре — ези на 0°, тура на 180° — след което добавя 5 пълни завъртания, за да изглежда като истинско премятане. Колелото прави същото: намира ъгловото отместване, което довежда печелившия сектор под показалеца, добавя 6 пълни завъртания и прилага малко случайно трептене, така че показалецът не спира винаги точно в средата на сектора.
  3. 3
    CSS преходи и requestAnimationFrame управляват анимацията
    Монетата и колелото се анимират чрез CSS transform с крива на изглаждане cubic-bezier, приложена към единична натрупана стойност на въртене — не е нужен JavaScript за всеки кадър, след като ъгълът е зададен. Изборът на опция вместо това използва requestAnimationFrame: на всеки кадър квадратично нарастващ интервал определя дали да се придвижи маркирането, произвеждайки забавяне като на игрален автомат, което винаги спира на предварително определения победител.
  4. 4
    Резултатът се разкрива и записва в историята на сесията
    setTimeout се задейства, когато анимацията приключи (1.3 с за монетата, 4.3 с за колелото) и записва резултата в състоянието. Режимът с монета поддържа текуща история на сесията от до 24 хвърляния с брой на ези/тура. Потребители с включено prefers-reduced-motion пропускат анимацията изцяло и виждат резултата незабавно.

Свързани инструменти

Често задавани въпроси