Перайсці да асноўнага зместу
LibraTool logoLibraTool

Падкід манеты і кола з раскруткай — бясплатна

Перакіньце віртуальную манету, круціце наладжвальнае кола ці выпадкова абярыце варыянт са спісу. Выкарыстоўвае крыптаграфічна бяспечную выпадковасць вашага браўзера — гэта не правяраемы публічны розыгрыш, таму пазбягайце рэгуляваных конкурсаў.

Працуе афлайн пасля загрузкі

🔒 Усе тры інструменты выкарыстоўваюць крыптаграфічна бяспечны генератар выпадковых лікаў вашага браўзера: спачатку выбіраецца вынік, а потым ён анімуецца — манета сапраўды выпадае 50/50, кола круціцца да ўжо выбранага выніку, а выбар са спісу бесстаронні. Нічога не пакідае вашу прыладу. Гэта справядліва для звычайнага выкарыстання, але не з'яўляецца правяраемым публічным розыгрышам, таму пазбягайце рэгуляваных конкурсаў ці рашэнняў з высокімі ставкамі.

Тыповыя выкарыстанні

  • Кіньце манету, каб прынаць рашэннеПадкіньце сумленную віртуальную манетку, каб хутка і бесстаронне прыняць рашэнне, калі вагаецеся паміж двума варыянтамі.
  • Крушь Колеса для выпадкова распрацоўкі камандыВыкарыстоўвайце налаштавальны колес спіна, каб выпадкова прырадзіць чальцаў каманды да задачаў, ролеў ці групаў.
  • Выпадковы адбор студэнта для класаўВыкарыстоўвайце спінальнае колес ці абрая опцыі, каб выпадкова развяжаць студэнтаў, прырадзіць групы ці абраць волан.
  • Віртуальна кідаць манету для спортуКіньце справядліву манету, каб вызначыць бакі каманды, першы прываў, парадак падачы ці іншыя спортыўныя рашэнні.
  • Выпадковы абрана для прамоцыяўАбярыце выпадкова переможца з спіса ўваходаў, выкарыстоўвая Option Picker — прозрацай і справядліва.

Як гэта працуе

Усе тры рэжымы — кідок манеты, кручэнне кола і выбар варыянта — выкарыстоўваюць убудаваны 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 цалкам прапускаюць анімацыю і бачаць вынік неадкладна.

Звязаныя інструменты

Часта задаюць пытанні