Spinvolta

Sådan virker retfærdigheden

Først tilfældigheden. Så animationen. Kan tjekkes, når det betyder noget.

1. Hvert resultat kommer fra en kryptografisk tilfældighedsgenerator

Spinvolta trækker resultater med crypto.getRandomValues(), den kryptografisk sikre tilfældighedsgenerator, der findes i alle moderne browsere og operativsystemer — den samme kilde, som bruges til at lave krypteringsnøgler. Vi bruger aldrig Math.random() til at afgøre noget. (Rent dekorative ting, som hvor et stykke konfetti flyver hen, må gerne.)

2. Ingen modulo-skævhed

Et tilfældigt tal på 32 bit kan ikke altid fordeles retfærdigt på fx 7 muligheder: 4.294.967.296 er ikke deleligt med 7, så det naive tal % 7 gør nogle muligheder en anelse mere sandsynlige. Spinvolta bruger forkastelsesudvælgelse: lander et tal i den ujævne rest øverst i intervallet, kasseres det, og et nyt trækkes. Så får hver mulighed præcis samme chance, uanset antallet af muligheder.

3. Vægtene er præcise

I vægtet tilstand omregnes vægte som 1, 2,5 eller 0,125 til heltal på en fælles skala og summeres præcist. Én ligefordelt trækning over summen vælger vinderen, så en mulighed med vægt 2 er præcis dobbelt så sandsynlig som en med vægt 1 — og feltstørrelserne på hjulet viser præcis de chancer.

4. Flere vindere uden gentagelse

Flere vindere, hold, tilfældig rækkefølge, kortblanding og konkurrencer bruger en upartisk Fisher-Yates-blanding (med samme forkastelsesudvælgelse), så hver mulig rækkefølge eller gruppe af vindere er lige sandsynlig.

5. Først resultatet, så animationen

Når du trykker på Drej, er vinderen fastlagt, før hjulet bevæger sig. Derefter beregner en løser en bevægelse — tilløb, fart, antal omgange, den bløde vippen til sidst — der lander præcist i vinderfeltet, et tilfældigt sted et stykke fra kanterne. Et hårdere svirp, et længere drej eller manuelt stop ændrer kun, hvordan det ser ud. Vores automatiske tests kører tusindvis af tilfældige drej for at sikre, at animationen altid lander på det forudbestemte resultat og aldrig glider over til naboen.

6. Bevisbart retfærdige trækninger til konkurrencer og rum

Ved konkurrencer (og alle trækninger, hvor tillid betyder noget) går Spinvolta videre, så du ikke behøver stole på os eller arrangøren:

  1. Før trækningen låser din browser den præcise deltagerliste og indstillingerne og udgiver et fingeraftryk — en SHA-256-hash af listen, indstillingerne og et hemmeligt seed. Vores server registrerer, hvornår den modtog det.
  2. Fingeraftrykket udpeger en fremtidig runde af tilfældighedsfyret drand League of Entropy — en offentlig værdi, der laves hvert tredje sekund af uafhængige organisationer verden over, og som ingen kan forudsige eller vælge.
  3. Når den runde udgives, beregnes vinderne ud fra fingeraftrykket, fyrets værdi og seedet.
  4. Bevissiden viser det hele. Alle kan trykke på Verificér og genberegne alt i deres egen browser, inklusive fyrets kryptografiske signatur.

Arrangøren kan ikke vælge vinderen, fordi fyrets værdi ikke fandtes, da listen blev låst. Det kan vi heller ikke, fordi vi aldrig ser seedet, før fingeraftrykket er låst, og vi ikke styrer drand. Hvis fyret ikke kan nås, falder trækningen tilbage på en tydeligt mærket trækning med forpligtelse og afsløring.

7. Statistisk testet

Vores testsuite kører chi-i-anden-test over hundredtusindvis af simulerede trækninger ved hver ændring, og i den fulde suite over en million: ligefordelte trækninger, vægtede trækninger, blanding og placeringer med flere vindere. Din egen version kan du køre på siden retfærdighedstest.

Det, vi ikke kan bevise

Ved et almindeligt drej stoler du på, at koden i din browser er den kode, vi beskriver. Den kører helt på din enhed, og du kan gennemgå den med browserens udviklerværktøjer. Står der mere på spil — præmier, offentlige trækninger — så brug en bevisbart retfærdig trækning, hvor du ikke behøver stole på nogen.

Ofte stillede spørgsmål

Kan hjulet manipuleres?

Ikke via animationen: resultatet trækkes retfærdigt først, og bevægelsen beregnes for at vise det. Chancerne kan kun ændres med vægtet tilstand, som viser mærket ”Vægtet hjul” og tegner felterne i skala.

Hvorfor kom det samme navn to gange i træk?

Fordi ægte tilfældighed har serier. Med 10 muligheder kommer den samme to gange i træk i 10 % af tilfældene. Brug udskilningstilstand, hvis hver mulighed kun skal komme én gang.

Hvad er drand?

drand er et distribueret tilfældighedsfyr, der drives af League of Entropy, en gruppe uafhængige universiteter, virksomheder og organisationer. Det udgiver en ny, kontrollerbar tilfældig værdi med få sekunders mellemrum.