Skip to main content

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 n

Esempio pratico

Estrarre un numero da 1 a 3 da una sorgente che restituisce 0, 1, 2 o 3.

  1. ingenuo: 0→1, 1→2, 2→3, 3→1, quindi 1 compare due volte e ottiene il 50% invece del 33%
  2. corretto: limite = floor(4 / 3) × 3 = 3, quindi un 3 estratto viene scartato e riestratto
  3. 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.