Hoppa till huvudinnehåll
LibraTool logoLibraTool

Gratis Myntkast och snurrhjul

Vänd ett virtuellt mynt, snurra ett anpassningsbart hjul eller välj slumpmässigt från en lista med alternativ. Använder din webbläsares kryptografiskt säkra slumpmässighet — inte en verifierbar offentlig dragning, så undvik reglerade tävlingar.

Fungerar offline när den väl lästs in

🔒 Alla tre använder din webbläsares kryptografiskt-säkra slumpmässighetsgenerator: resultatet väljs först och animeras sedan — myntet är en sann 50/50, hjulet snurras till sitt redan valda resultat och väljaren är opartisk. Ingenting lämnar din enhet. Detta är rättvist för casual användning, men det är inte en verifierbar offentlig dragning, så undvik reglerade tävlingar eller beslut med höga värden.

Vanliga användningar

  • Vänd ett mynt för att fatta beslutAnvänd ett rättvist virtuellt myntkast för att fatta snabba, opartiska beslut när du sitter fast mellan två alternativ.
  • Spinna hjul för slumpmässiga laguppgifterAnvänd det anpassningsbara spinnhjulet för att slumpmässigt tilldela lagmedlemmar till uppgifter, roller eller grupper.
  • Slumpmässig elevväljare för klassrumAnvänd spinnhjulet eller alternativväljaren för att slumpmässigt kalla på elever, tilldela grupper eller välja volontärer.
  • Virtuellt myntkast för sportVänd ett rättvist mynt för att bestämma lagssidor, första innehav, serveordning eller andra sportbeslut.
  • Slumpmässig väljare för giveawaysVälj en slumpmässig vinnare från en postlista med hjälp av alternativväljaren — transparent och rättvis.

Så här fungerar det

Alla tre lägen — myntsingling, snurrhjul och alternativväljare — använder webbläsarens inbyggda Web Crypto API (crypto.getRandomValues) för att generera det vinnande utfallet, och driver sedan animationen helt klientsidesbaserat med CSS-transformationer och requestAnimationFrame. Ingen server är inblandad någonstans.

  1. 1
    Web Crypto väljer vinnaren
    Innan någon animation startar fyller crypto.getRandomValues en Uint32Array med ett kryptografiskt slumpmässigt 32-bitars heltal. En modulo-operation mappar det till antalet alternativ (2 för krona/klave, N för hjulet eller väljaren), så varje utfall har exakt samma sannolikhet.
  2. 2
    Rotationsvinkeln beräknas för att landa på resultatet
    För myntet beräknar koden den kortaste extra rotationen (utöver den nuvarande ackumulerade vinkeln) som slutar med rätt sida upp — krona vid 0°, klave vid 180° — och lägger sedan till 5 hela varv så att det ser ut som en riktig singling. Hjulet gör samma sak: det hittar vinkelförskjutningen som för den vinnande skivan under pekaren, lägger till 6 hela varv och tillämpar lite slumpmässig darrighet så att pekaren inte alltid stannar mitt i skivan.
  3. 3
    CSS-övergångar och requestAnimationFrame driver animationen
    Myntet och hjulet animeras via CSS transform med en cubic-bezier-utjämningskurva tillämpad på ett enda ackumulerat rotationsvärde — ingen JavaScript per bildruta behövs när vinkeln väl är satt. Alternativväljaren använder istället requestAnimationFrame: varje bildruta avgör ett kvadratiskt växande intervall om markeringen ska flyttas fram, vilket ger en spelautomat-liknande inbromsning som alltid stannar på den förutbestämda vinnaren.
  4. 4
    Resultatet visas och loggas i sessionens historik
    En setTimeout utlöses när animationen är klar (1,3 s för myntet, 4,3 s för hjulet) och skriver resultatet till state. Myntläget håller en löpande sessionshistorik med upp till 24 singlingar med antal krona/klave. Användare med prefers-reduced-motion aktiverat hoppar över animationen helt och ser resultatet direkt.

Relaterade verktyg

Vanliga frågor