Vés al contingut principal

Llançament de moneda i roda giratòria de franc

Voleu una moneda virtual, gireu una roda personalitzable o trieu aleatòriament d'una llista d'opcions. Utilitza la aleatoretat criptogràficament segura del navegador — no és un sorteig públic verificable, així que eviteu competicions regulades.

Funciona sense connexió un cop carregat

🔒 Els tres utilitzen el generador de nombres aleatoris criptogràficament segur del navegador: el resultat s'escull primer, després s'anima — la moneda és un veritable 50/50, la roda es fa girar al resultat ja escollit, i el selector és imparcial. Res no abandona el vostre dispositiu. Això és just per a l'ús casual, però no és un sorteig públic verificable, així que eviteu competicions regulades o decisions de valor elevat.

Usos habituals

  • Gireu una moneda per prendre decisionsUtilitzeu una tirada de moneda virtual justa per a decisions ràpides i imparcials quan quedeu atrapats entre dues opcions.
  • Gireu una roda per a assignacions aleatòries de l'equipUtilitzeu una roda personalitzable per assignar aleatòriament membres de l'equip a tasques, funcions o grups.
  • Selector aleatori d'estudiants per a aulesUtilitzeu la roda o el selector d'opcions per cridar aleatòriament als estudiants, assignar grups o seleccionar voluntaris.
  • Tirada de moneda virtual per a esportsGireu una moneda justa per determinar els costats de l'equip, la primera possessió, l'ordre de servei o altres decisions esportives.
  • Selector aleatori per a sortejosEscolliu un guanyador aleatori d'una llista d'entrades utilitzant el selector d'opcions — transparent i just.

Com funciona

Els tres modes — cara o creu, roda giratòria i selector d'opcions — utilitzen l'API Web Crypto integrada del navegador (crypto.getRandomValues) per generar el resultat guanyador, i després condueixen l'animació completament del costat del client amb transformacions CSS i requestAnimationFrame. No hi ha cap servidor implicat en cap moment.

  1. 1
    Web Crypto tria el guanyador
    Abans que comenci cap animació, crypto.getRandomValues omple un Uint32Array amb un enter de 32 bits criptogràficament aleatori. Una operació de mòdul el mapeja al nombre d'opcions (2 per a cara/creu, N per a la roda o el selector), així que cada resultat té una probabilitat exactament igual.
  2. 2
    L'angle de rotació es calcula per aterrar en el resultat
    Per a la moneda, el codi calcula la rotació addicional més curta (sobre l'angle acumulat actual) que acaba amb la cara correcta cap amunt — cara a 0°, creu a 180° — i després afegeix 5 voltes completes perquè sembli un giravolt real. La roda fa el mateix: troba el desplaçament angular que porta la porció guanyadora sota l'indicador, afegeix 6 voltes completes, i aplica una petita variació aleatòria perquè l'indicador no s'aturi sempre exactament al centre de la porció.
  3. 3
    Les transicions CSS i requestAnimationFrame condueixen l'animació
    La moneda i la roda s'animen via transform CSS amb una corba de suavitzat cubic-bezier aplicada a un únic valor de rotació acumulat — no cal cap JavaScript per fotograma un cop establert l'angle. El selector d'opcions utilitza requestAnimationFrame en canvi: a cada fotograma, un interval de creixement quadràtic determina si avançar el ressaltat, produint una desacceleració d'estil màquina escurçadora que sempre s'atura en el guanyador predeterminat.
  4. 4
    El resultat es revela i es registra a l'historial de sessió
    Un setTimeout es dispara quan l'animació acaba (1,3 s per a la moneda, 4,3 s per a la roda) i escriu el resultat a l'estat. El mode de moneda manté un historial de sessió en curs de fins a 24 tirades amb recomptes de cara/creu. Els usuaris amb prefers-reduced-motion activat s'estalvien l'animació completament i veuen el resultat immediatament.

Eines relacionades

Preguntes freqüents