Come funziona l'estrazione
Niente formule tipo "fidati, è casuale". Ecco il metodo esatto.
Il vincitore viene estratto prima che la ruota si muova
Ogni giro seleziona prima il vincitore e poi orienta l'animazione verso di esso. Questo ordine garantisce che la forza del gesto non possa alterare il risultato, e che l'attivazione della modalità con movimento ridotto esegua la stessa identica estrazione senza animazione anziché un codice differente. Significa anche che il giro visualizzato è la riproduzione visiva di una decisione già presa: l'unico modo per garantire contemporaneamente entrambe le promesse.
Da dove proviene la casualità
La fonte di casualità è il generatore crittografico del tuo browser, crypto.getRandomValues, e non Math.random. Math.random può essere prevedibile, e su alcuni motori lo è davvero: per un'estrazione questo fa la differenza.
Perché scartiamo alcuni numeri
Convertire un numero casuale a 32 bit in "un numero da 0 a 11" prendendo il resto della divisione (modulo) introduce una sottile distorsione. 2³² non è divisibile esattamente per 12, quindi le prime opzioni ottengono una possibilità in più. Su una ruota a dodici spicchi il divario è minuscolo, ma reale: favorisce sempre gli stessi spicchi e non si compensa mai nel tempo. Per questo, anziché calcolare il resto, scartiamo ogni estrazione che cade nella coda asimmetrica e ne chiediamo un'altra (campionamento per rifiuto). Richiede occasionalmente un'estrazione supplementare, ma garantisce un risultato perfettamente uniforme.
const limit = Math.floor(2 ** 32 / max) * max;
let draw = crypto.getRandomValues(new Uint32Array(1))[0];
while (draw >= limit) {
draw = crypto.getRandomValues(new Uint32Array(1))[0];
}
return draw % max;I pesi e perché le dimensioni degli spicchi corrispondono
Un'estrazione ponderata calcola la somma dei pesi, estrae un numero uniforme inferiore a tale totale tramite lo stesso metodo di rifiuto e individua a quale voce corrisponde. La ruota disegna quindi ciascuno spicchio esattamente in proporzione alla sua quota del cerchio. Una ruota con spicchi apparentemente uguali ma probabilità diverse sarebbe ingannevole: per questo motivo, area visiva e probabilità corrispondono per costruzione e non per semplice convenzione.
Il tuo elenco non lascia mai il tuo browser
Non ci sono account né salvataggi sul server. Il tuo elenco risiede solo in questo browser e un link di condivisione include i dati della ruota direttamente nell'URL. Nulla dell'estrazione viene registrato altrove o reso visibile a noi.
Verificalo tu stesso
Il codice dell'estrazione conta poche decine di righe e ogni affermazione qui riportata è verificata da un test automatizzato che fallirebbe se non fosse vera — compreso uno che invia al generatore numeri concepiti per provocare la distorsione del modulo e verifica che il risultato resti uniforme.
Una ruota può contenere fino a 1000 voci, e il metodo descritto è identico per una voce sola o per tutte le 1000.