1. Elke uitslag komt uit een cryptografische randomgenerator
Spinvolta trekt uitslagen met crypto.getRandomValues(), de cryptografisch veilige randomgenerator die in elke moderne browser en elk besturingssysteem zit — dezelfde bron waarmee encryptiesleutels worden gemaakt. We gebruiken nooit Math.random() om iets te beslissen. (Puur decoratieve dingen, zoals waar een snipper confetti heen vliegt, mogen dat wel.)
2. Geen modulo-vertekening
Een willekeurig getal van 32 bits laat zich niet altijd eerlijk verdelen over, zeg, 7 opties: 4.294.967.296 is geen veelvoud van 7, dus het naïeve getal % 7 maakt sommige opties een fractie waarschijnlijker. Spinvolta gebruikt afwijzingssteekproeven: valt een getal in de ongelijke rest bovenaan het bereik, dan wordt het weggegooid en opnieuw getrokken. Zo heeft elke optie precies dezelfde kans, bij elk aantal opties.
3. Gewichten zijn exact
In de gewogen modus worden gewichten als 1, 2,5 of 0,125 op een gemeenschappelijke schaal omgezet naar hele getallen en exact opgeteld. Eén gelijkverdeelde trekking over het totaal kiest de winnaar, dus een optie met gewicht 2 is precies twee keer zo waarschijnlijk als een met gewicht 1 — en de vakgroottes op het rad tonen precies die kansen.
4. Meerdere winnaars zonder herhaling
Meerdere winnaars, teams, willekeurige volgorde, kaarten schudden en winacties gebruiken een onbevooroordeelde Fisher-Yates-schudding (met dezelfde afwijzingssteekproeven), dus elke mogelijke volgorde of groep winnaars is even waarschijnlijk.
5. Eerst de uitslag, dan de animatie
Als je op Draaien drukt, staat de winnaar vast voordat het rad beweegt. Daarna berekent een solver een beweging — uithalen, snelheid, aantal rondes, het zachte nawiebelen — die precies in het winnende vak landt, op een willekeurige plek weg van de randen. Harder zwiepen, een langere draai of handmatig stoppen verandert alleen hoe het eruitziet. Onze automatische tests controleren duizenden willekeurige draaien om zeker te weten dat de animatie altijd op de vooraf getrokken uitslag landt en nooit doorschuift naar de buurman.
6. Aantoonbaar eerlijke trekkingen voor winacties en kamers
Bij winacties (en elke trekking waar vertrouwen telt) gaat Spinvolta verder, zodat je ons en de organisator niet hoeft te vertrouwen:
- Vóór de trekking legt je browser de exacte deelnemerslijst en instellingen vast en publiceert een vingerafdruk — een SHA-256-hash van de lijst, de instellingen en een geheime seed. Onze server legt vast wanneer hij die ontving.
- De vingerafdruk noemt een toekomstige ronde van het willekeurigheidsbaken drand League of Entropy — een openbare waarde die elke 3 seconden door onafhankelijke organisaties wereldwijd wordt gemaakt en die niemand kan voorspellen of kiezen.
- Zodra die ronde verschijnt, worden de winnaars berekend uit de vingerafdruk, de bakenwaarde en de seed.
- De bewijspagina toont alles. Iedereen kan op Controleren drukken om alles in de eigen browser na te rekenen, inclusief de cryptografische handtekening van het baken.
De organisator kan de winnaar niet kiezen, want de bakenwaarde bestond nog niet toen de lijst werd vastgelegd. Wij ook niet, want we zien de seed nooit voordat de vingerafdruk vastligt en we hebben geen controle over drand. Is het baken onbereikbaar, dan valt de trekking terug op een duidelijk gemarkeerde vastleg-en-onthul-trekking.
7. Statistisch getest
Onze testsuite draait bij elke wijziging chikwadraattoetsen over honderdduizenden gesimuleerde trekkingen, en in de volledige suite over meer dan een miljoen: gelijkverdeelde trekkingen, gewogen trekkingen, schudden en posities bij meerdere winnaars. Je eigen versie kun je draaien op de pagina eerlijkheidstest.
Wat we niet kunnen bewijzen
Bij een gewone draai vertrouw je erop dat de code in je browser de code is die we beschrijven. Die draait volledig op je apparaat en je kunt hem bekijken met de ontwikkelaarstools van je browser. Staat er meer op het spel — prijzen, openbare trekkingen — gebruik dan een aantoonbaar eerlijke trekking, waarbij je niemand hoeft te vertrouwen.
Veelgestelde vragen
Kan het rad worden gemanipuleerd?
Niet via de animatie: de uitslag wordt eerst eerlijk getrokken en de beweging wordt berekend om hem te tonen. Kansen veranderen kan alleen met de gewogen modus, die het label ‘Gewogen rad’ toont en de vakken op schaal tekent.
Waarom kwam dezelfde naam twee keer achter elkaar?
Omdat echt toeval reeksen kent. Met 10 opties komt dezelfde in 10% van de gevallen twee keer achter elkaar. Gebruik de afvalmodus als je wilt dat elke optie maar één keer komt.
Wat is drand?
drand is een gedistribueerd willekeurigheidsbaken van de League of Entropy, een groep onafhankelijke universiteiten, bedrijven en organisaties. Het publiceert om de paar seconden een nieuwe, controleerbare willekeurige waarde.