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