Pereiti prie pagrindinio turinio

Monetos metimas ir suktukas nemokamai

Metykite virtualią monetą, sukite pritaikomą ratą arba atsitiktinai pasirinkite iš parinkčių sąrašo. Naudoja kriptografiškai saugų naršyklės atsitiktinumą — tai nėra patikrinamas viešas burtų traukimas, todėl venkite reguliuojamų konkursų.

Veikia neprisijungus, kai įkeliama

🔒 Visi trys naudoja kriptografiškai saugų naršyklės atsitiktinių skaičių generatorių: rezultatas pasirenkamas pirmas, tada animuojamas — moneta yra tikras 50/50, ratas sukamas iki jau pasirinkto rezultato, o rinkiklis yra nešališkas. Iš jūsų įrenginio niekas neišeina. Tai sąžininga kasdieniam naudojimui, tačiau tai nėra patikrinamas viešas burtų traukimas, todėl venkite reguliuojamų konkursų ar didelės vertės sprendimų.

Dažniausi naudojimo būdai

  • Apverskite monetą sprendimamsNaudokite teisingą virtualią monetų apverčiamą greitiem, nešališkiems sprendimams, kai užsitiksite tarp dviejų pasirinkimų.
  • Suktite ratą atsitiktiniams komandos paskirtosNaudokite tinkintą ratą atsitiktiniam komandos narių paskyrymui užduotims, vaidmenims arba grupėms.
  • Atsitiktinis mokinių parinkimas klasėmsNaudokite ratą arba parinktį rinktuvę atsitiktiniam studentų skambučiui, grupių paskirtas arba savanorių parinkimui.
  • Virtuali moneta apverčiamoji sportuiApverskite teisingą monetą komandų šonams, pirmajai turtui, paslaugos eiliškumui arba kitiems sporto sprendimams nustatyti.
  • Atsitiktinis parinktuvas dovanųPasirinkite atsitiktinį laimėtoją iš įrašų sąrašo naudodami parinktį parinkiklį — skaidrus ir teisėtas.

Kaip tai veikia

Visi trys režimai — monetos metimas, sukamasis ratas ir parinkčių rinkiklis — naudoja naršyklės integruotą Web Crypto API (crypto.getRandomValues), kad sugeneruotų laimėjusį rezultatą, tada animaciją valdo visiškai kliento pusėje naudodami CSS transformacijas ir requestAnimationFrame. Serveris nedalyvauja jokiu metu.

  1. 1
    Web Crypto parenka laimėtoją
    Prieš pradedant bet kokią animaciją, crypto.getRandomValues užpildo Uint32Array kriptografiškai atsitiktiniu 32 bitų sveikuoju skaičiumi. Modulio operacija susieja jį su parinkčių skaičiumi (2 monetai — herbas/skaičius, N ratui ar rinkikliui), todėl kiekvienas rezultatas turi lygiai vienodą tikimybę.
  2. 2
    Sukimosi kampas apskaičiuojamas taip, kad nusileistų ties rezultatu
    Monetai kodas apskaičiuoja trumpiausią papildomą sukimąsi (virš dabartinio sukauptojo kampo), kuris baigiasi teisinga puse viršuje — herbas 0°, skaičius 180° — tada prideda 5 pilnus apsisukimus, kad atrodytų kaip tikras vertimasis. Ratas daro tą patį: randa kampinį poslinkį, kuris atveda laimėjusią dalį po rodykle, prideda 6 pilnus apsisukimus ir taiko nedidelį atsitiktinį svyravimą, kad rodyklė ne visada sustotų tiksliai dalies centre.
  3. 3
    CSS perėjimai ir requestAnimationFrame valdo animaciją
    Moneta ir ratas animuojami per CSS transform su cubic-bezier išlyginimo kreive, taikoma vienai sukauptai sukimosi reikšmei — kai kampas nustatytas, nereikia jokio kadro po kadro JavaScript kodo. Parinkčių rinkiklis vietoj to naudoja requestAnimationFrame: kiekviename kadre kvadratiškai augantis intervalas nusprendžia, ar pastumti paryškinimą, sukuriant lošimo automato lėtėjimo efektą, kuris visada sustoja ties iš anksto nustatytu laimėtoju.
  4. 4
    Rezultatas atskleidžiamas ir įrašomas į seanso istoriją
    Animacijai pasibaigus (1,3 s monetai, 4,3 s ratui) suveikia setTimeout ir įrašo rezultatą į būseną. Monetos režimas kaupia iki 24 metimų seanso istoriją su herbo/skaičiaus skaičiais. Vartotojams su įjungtu prefers-reduced-motion nustatymu animacija visiškai praleidžiama ir rezultatas parodomas iš karto.

Susiję įrankiai

Dažnai užduodami klausimai