Le estrazioni provengono dalla sorgente crittografica del browser, non da Math.random, quindi ogni esito è ugualmente probabile.
1
Perché il modo ovvio di estrarre un numero casuale è leggermente sbagliato
Prendere un grande valore casuale e ridurlo con il resto è il trucco standard, ed è distorto. Se l'intervallo non divide la sorgente in modo esatto, alcuni numeri ricevono una possibilità in più. Questo strumento scarta quei casi e riestrae, così ogni numero dell'intervallo è davvero ugualmente probabile.
Come funziona
- Estrae numeri nell'intervallo che imposti, uno alla volta o fino a cinquanta insieme.
- Se vuoi estrae senza ripetizioni, che è ciò che serve per un'estrazione a premi o una schedina.
- Usa crypto.getRandomValues() invece di Math.random(), con rigetto per togliere la distorsione del modulo.
ingenuo: valore % intervallo → distorto
corretto: limite = floor(MAX / intervallo) × intervallo
riestrai finché valore >= limite
risultato = min + (valore % intervallo)
senza ripetizioni: mescola tutto l'intervallo e prendi i primi nEsempio pratico
Estrarre un numero da 1 a 3 da una sorgente che restituisce 0, 1, 2 o 3.
- ingenuo: 0→1, 1→2, 2→3, 3→1, quindi 1 compare due volte e ottiene il 50% invece del 33%
- corretto: limite = floor(4 / 3) × 3 = 3, quindi un 3 estratto viene scartato e riestratto
- gli esiti rimanenti 0, 1, 2 diventano 1, 2, 3 con 1/3 ciascuno
Su intervalli piccoli con una sorgente a 32 bit la distorsione è minuscola ma reale, e rimuoverla costa molto di rado un'estrazione in più.
Come leggere il risultato
- Estrarre senza ripetizioni mescola l'intero intervallo e prende i primi n, restando uniforme. Riestrarre scartando i duplicati peggiora molto quando l'intervallo è quasi esaurito.
- L'intervallo include entrambi gli estremi: da 1 a 100 può restituire 1 e può restituire 100.
- Nulla viene trasmesso. L'estrazione avviene nel browser, quindi nessun server vede i numeri né può influenzarli.
Domande frequenti
- Posso usarlo per un'estrazione a premi?
- Per una informale sì: è imparziale e nulla lascia il tuo computer. Per qualcosa con rilievo legale o economico usa una procedura che lasci una traccia verificabile, perché un'estrazione nel browser non lascia prove.
- Una schedina estratta qui ha più probabilità di vincere?
- No. Ogni combinazione ha la stessa probabilità, comunque la si scelga. Scegliere a caso però rende meno probabile dividere un jackpot, perché le persone si concentrano su compleanni e schemi.