In questo articolo
Cos'è la generazione di numeri casuali?
La generazione di numeri casuali è il processo di produzione di numeri che non possono essere previsti in anticipo. I computer sono macchine deterministiche — non possono produrre vera casualità senza input esterni. Diverse tecniche producono qualità diverse di casualità, il che è di grande importanza per le applicazioni di sicurezza.
I generatori di numeri veramente casuali (TRNG) raccolgono entropy da fenomeni fisici: movimenti del mouse, timing della tastiera, tempi di arrivo dei pacchetti di rete, o sensori hardware dedicati. I generatori di numeri pseudo-casuali (PRNG) usano algoritmi matematici alimentati con entropy per produrre sequenze che sembrano casuali.
Come vengono generati i numeri casuali
CheckTown utilizza il generatore di numeri casuali crittograficamente sicuro del browser.
- Fonte di entropy — usa window.crypto.getRandomValues() che attinge dall'entropy a livello di sistema operativo
- Mappatura dell'intervallo — mappa i valori casuali grezzi nell'intervallo min/max specificato senza distorsioni
- Generazione in batch — genera più numeri contemporaneamente per liste, array o esigenze in blocco
Prova gratuitamente — nessuna registrazione richiesta
Genera numeri casuali →Quando usare un generatore di numeri casuali
La generazione di numeri casuali ha molte applicazioni nello sviluppo, nel testing e nelle statistiche.
- Testing — genera dati di test casuali per popolare fixture o inizializzare database di test
- Campionamento — seleziona campioni casuali da dataset per analisi statistiche o assegnazione di test A/B
- Giochi e simulazioni — genera input imprevedibili per simulazioni, giochi o lotterie
Domande frequenti
Qual è la differenza tra Math.random() e crypto.getRandomValues()?
Math.random() usa un PRNG veloce inizializzato all'avvio. È adatto per simulazioni e giochi, ma non per la sicurezza. crypto.getRandomValues() usa il CSPRNG del sistema operativo (PRNG Crittograficamente Sicuro), adatto per generare token, chiavi e altri valori sensibili alla sicurezza. Usa sempre crypto.getRandomValues() per scopi di sicurezza.
Posso usare numeri casuali per le chiavi crittografiche?
Sì, ma solo se generati con un CSPRNG. I numeri casuali da Math.random() o PRNG non crittografici simili sono prevedibili dato il seed e abbastanza campioni di output. Le chiavi crittografiche, i token, i salt e i nonce devono essere generati con casualità crittograficamente sicura.
Cos'è il modulo bias e come influenza gli intervalli di numeri casuali?
Il modulo bias si verifica quando si mappa un valore casuale su un intervallo usando l'operatore %. Se lo spazio dei valori casuali non è uniformemente divisibile per la dimensione dell'intervallo, alcuni valori appaiono più frequentemente di altri. Ad esempio, mappare 0-255 su 0-9 usando % 10 fa sì che 0-5 appaiano leggermente più spesso. CheckTown usa il rejection sampling per eliminare le distorsioni.