Spinvolta

Slik fungerer rettferdigheten

Først tilfeldigheten. Så animasjonen. Kan sjekkes når det betyr noe.

1. Hvert resultat kommer fra en kryptografisk tilfeldighetsgenerator

Spinvolta trekker resultater med crypto.getRandomValues(), den kryptografisk sikre tilfeldighetsgeneratoren som finnes i alle moderne nettlesere og operativsystemer — den samme kilden som brukes til å lage krypteringsnøkler. Vi bruker aldri Math.random() til å avgjøre noe. (Rent dekorative ting, som hvor en konfettibit flyr, får lov.)

2. Ingen modulo-skjevhet

Et tilfeldig tall på 32 bit kan ikke alltid fordeles rettferdig på for eksempel 7 alternativer: 4 294 967 296 er ikke delelig med 7, så det naive tall % 7 gjør noen alternativer litt mer sannsynlige. Spinvolta bruker forkastingsutvalg: havner et tall i den ujevne resten øverst i intervallet, forkastes det og et nytt trekkes. Slik får hvert alternativ nøyaktig samme sjanse, uansett antall alternativer.

3. Vektene er nøyaktige

I vektet modus regnes vekter som 1, 2,5 eller 0,125 om til heltall på en felles skala og summeres nøyaktig. Én jevnt fordelt trekning over summen velger vinneren, så et alternativ med vekt 2 er nøyaktig dobbelt så sannsynlig som et med vekt 1 — og feltstørrelsene på hjulet viser nøyaktig de sjansene.

4. Flere vinnere uten gjentakelse

Flere vinnere, lag, tilfeldig rekkefølge, kortstokking og konkurranser bruker en upartisk Fisher-Yates-stokking (med det samme forkastingsutvalget), så hver mulig rekkefølge eller gruppe av vinnere er like sannsynlig.

5. Først resultatet, så animasjonen

Når du trykker Snurr, er vinneren bestemt før hjulet beveger seg. Deretter regner en løser ut en bevegelse — sats, fart, antall runder, den myke vuggingen til slutt — som lander nøyaktig i vinnerfeltet, på et tilfeldig sted et stykke fra kantene. Et hardere sveip, et lengre snurr eller manuell stopp endrer bare hvordan det ser ut. De automatiske testene våre kjører tusenvis av tilfeldige snurr for å sikre at animasjonen alltid lander på det forhåndsbestemte resultatet og aldri glir over til naboen.

6. Bevisbart rettferdige trekninger for konkurranser og rom

Ved konkurranser (og alle trekninger der tillit betyr noe) går Spinvolta lenger, så du ikke trenger å stole på oss eller arrangøren:

  1. Før trekningen låser nettleseren din den nøyaktige deltakerlisten og innstillingene og publiserer et fingeravtrykk — en SHA-256-hash av listen, innstillingene og et hemmelig frø. Serveren vår registrerer når den mottok det.
  2. Fingeravtrykket peker ut en framtidig runde av tilfeldighetsfyret drand League of Entropy — en offentlig verdi som lages hvert tredje sekund av uavhengige organisasjoner verden over, og som ingen kan forutsi eller velge.
  3. Når den runden publiseres, regnes vinnerne ut fra fingeravtrykket, fyrets verdi og frøet.
  4. Bevissiden viser alt. Alle kan trykke Verifiser og regne ut alt på nytt i sin egen nettleser, inkludert fyrets kryptografiske signatur.

Arrangøren kan ikke velge vinneren, fordi fyrets verdi ikke fantes da listen ble låst. Det kan ikke vi heller, fordi vi aldri ser frøet før fingeravtrykket er låst, og vi ikke styrer drand. Hvis fyret ikke kan nås, faller trekningen tilbake på en tydelig merket trekning med forpliktelse og avsløring.

7. Statistisk testet

Testsuiten vår kjører kjikvadrattester over hundretusenvis av simulerte trekninger ved hver endring, og i den fullstendige suiten over en million: jevnt fordelte trekninger, vektede trekninger, stokking og plasseringer med flere vinnere. Din egen versjon kan du kjøre på siden rettferdighetstest.

Det vi ikke kan bevise

Ved et vanlig snurr stoler du på at koden i nettleseren din er koden vi beskriver. Den kjører helt på enheten din, og du kan se gjennom den med nettleserens utviklerverktøy. Står det mer på spill — premier, offentlige trekninger — bruk en bevisbart rettferdig trekning, der du ikke trenger å stole på noen.

Vanlige spørsmål

Kan hjulet manipuleres?

Ikke via animasjonen: resultatet trekkes rettferdig først, og bevegelsen regnes ut for å vise det. Sjansene kan bare endres med vektet modus, som viser merket «Vektet hjul» og tegner feltene i skala.

Hvorfor kom det samme navnet to ganger på rad?

Fordi ekte tilfeldighet har rekker. Med 10 alternativer kommer det samme to ganger på rad i 10 % av tilfellene. Bruk utslagsmodus hvis hvert alternativ bare skal komme én gang.

Hva er drand?

drand er et distribuert tilfeldighetsfyr som drives av League of Entropy, en gruppe uavhengige universiteter, selskaper og organisasjoner. Det publiserer en ny, kontrollerbar tilfeldig verdi med noen sekunders mellomrom.