Generatore di Numeri Casuali (crittograficamente sicuro, modalità
Scegli un minimo, un massimo e un conteggio per generare interi casuali crittograficamente sicuri. Attiva 'unico' per il campionamento senza ripetizione (sorteggi, lotterie).
Come funziona
Perché questo è davvero casuale
Usiamo crypto.getRandomValues — la fonte casuale crittograficamente sicura del browser — invece di Math.random(). L'output CSPRNG non può essere previsto dai valori precedenti, il che è importante per le estrazioni della lotteria, le applicazioni vicine al gioco d'azzardo e qualsiasi uso in cui 'casuale' è un requisito reale, non solo 'arbitrario'.
Usiamo anche il campionamento per rifiuto per rendere la distribuzione esattamente uniforme nell'intervallo scelto. Il 'casuale % intervallo' naive introduce distorsioni quando l'intervallo non si divide uniformemente in 2³². Il campionamento per rifiuto scarta i valori che causerebbero distorsioni e riprova, così ogni numero nell'intervallo ha esattamente la stessa probabilità.
Unico vs duplicati ammessi
Modalità predefinita: ogni numero è indipendente — possono verificarsi duplicati. Questo è ciò che 'casuale' di solito significa nell'uso comune (lanciare i dadi, scegliere un film, test randomizzato).
Modalità unica: campionamento senza ripetizione — una volta che un numero viene scelto, non può essere scelto di nuovo nello stesso batch. Utile per: estrazioni della lotteria (es. 6 numeri da 1-90), sorteggi (estrazione vincitori), assegnazioni di squadre e qualsiasi situazione 'scegli N da M'. Richiede conteggio ≤ intervallo.
Casi d'uso comuni
Lotteria / sorteggio: 6 numeri unici da 1-90 (Superenalotto), o qualunque sia la tua estrazione. Attiva 'unico'.
Lanci di dadi: intervallo 1-6 (o 1-20 per D20). Lascia 'unico' disattivato così ogni lancio è indipendente.
Campionamento casuale per test: scegli 10 ID utente casuali da 1-10000 per un controllo spot. Usa 'unico' per evitare duplicati.
Simulazione di lanci di moneta: intervallo 0-1, risultati multipli. Conta testa/croce per verifica dell'equità (vedrai ~50/50 su campioni grandi).
Domande frequenti
›È equo per sorteggi o lotterie?
La casualità è crittograficamente sicura e senza distorsioni. Se sia legalmente 'equo' per una lotteria ufficiale dipende dalle regole della tua giurisdizione — molte richiedono RNG hardware certificati.
›Qual è la differenza da Math.random()?
Math.random() usa un algoritmo il cui output può essere previsto dai risultati precedenti da un attaccante. crypto.getRandomValues usa un RNG crittografico a livello di sistema operativo che non può essere previsto. Per vera equità, usa questo.
›Posso ottenere numeri negativi?
Sì. Imposta il minimo su un valore negativo.
›Qual è l'intervallo massimo?
Limitato dall'intervallo degli interi sicuri di JavaScript (~2⁵³), ma praticamente puoi arrivare a miliardi senza problemi. La tecnica di campionamento per rifiuto gestisce correttamente qualsiasi intervallo.
›Perché 'unico' fallisce quando il conteggio > intervallo?
Se scegli 10 numeri unici da 1-5, quattro non esistono. La convalida lo rileva e ti chiede di allargare l'intervallo o ridurre il conteggio.
›Funziona per i lanci di dadi?
Sì — imposta l'intervallo su 1-6 (o qualunque siano i tuoi dadi) e disattiva 'unico' così ogni lancio è indipendente.
›Posso salvare il seme e riprodurre?
No — il casuale sicuro è progettato senza seme. Se hai bisogno di 'casuale' riproducibile per test, usa una libreria PRNG con seme.
›I dati vengono inviati da qualche parte?
No. La generazione è completamente locale.
Strumenti correlati
Ultimo aggiornamento: