Generatore di numeri casuali

Genera un numero casuale, una lista o più set di numeri in qualsiasi intervallo – direttamente nel tuo browser con casualità crittografica, mai su un server.

Premi Genera per ottenere il risultato
Opzioni

Ti serve un modo rapido e imparziale per ottenere un numero casuale? Questo generatore di numeri casuali online e gratuito genera un numero – o un'intera lista di numeri – in qualsiasi intervallo tu scelga, da un semplice intervallo da 1 a 10 fino a intervalli che coprono miliardi di valori. Imposta i valori minimo e massimo nei campi «Min» e «Max», scegli quanti numeri ti servono con «Quantità» e premi «Genera». Entrambi gli estremi sono inclusi, quindi un intervallo da 1 a 10 può restituire sia 1 sia 10.

Ogni risultato viene prodotto direttamente nel tuo browser tramite la Web Crypto API (crypto.getRandomValues) – che fornisce valori casuali crittograficamente sicuri dalla casualità di sistema sottostante al browser. Niente viene inviato a un server, niente viene registrato, e non vediamo mai i tuoi numeri. La generazione è istantanea, privata, e continua a funzionare anche con una connessione lenta una volta caricata la pagina.

Le opzioni sono pensate per le situazioni reali in cui servono numeri casuali. Attiva «Senza duplicati» perché nessun numero compaia due volte – l'impostazione giusta per sorteggi, estrazioni in stile lotteria o per dividere le persone in gruppi senza ripetizioni. Ti servono venti vincitori su 500 partecipanti? Imposta «Min» su 1 e «Max» su 500, attiva «Senza duplicati», imposta «Quantità» su 20 e premi «Genera». «Ordinamento» dispone il risultato in modo crescente o decrescente, e un pulsante permette di copiare tutto l'elenco. Se cambi il «Formato del risultato» da «Nuova riga» a «Separati da spazi» o «Separati da virgole», compare «Numero di set»: più estrazioni indipendenti in un solo clic – venti set da 3 numeri per venti turni di sorteggio – con «Consenti duplicati tra i set» a decidere se lo stesso numero può comparire in più di un set.

Come viene generata davvero la casualità? La casualità del browser proviene dal generatore casuale crittograficamente sicuro del tuo sistema operativo, mai da JavaScript in sé. Quando premi «Genera», il JavaScript della pagina chiede al browser valori grezzi a 32 bit tramite crypto.getRandomValues e li mappa sull'intervallo impostato. Non c'è alcun seed da indovinare, nessuna scorciatoia algoritmica da replicare, e nessuna richiesta di rete in nessun passaggio.

Mappare un valore grezzo sul tuo intervallo è il punto in cui molti generatori commettono un errore che passa inosservato, e merita un paragrafo a parte. Calcolare il modulo del valore rispetto alla dimensione dell'intervallo è l'approccio più ovvio, ed è anche quello distorto: a meno che l'intervallo non divida esattamente 2^32, i numeri più bassi escono leggermente più spesso degli altri. Questo difetto si chiama modulo bias (distorsione da modulo), ed è misurabile, non solo teorico. Questo generatore, invece, scarta ogni valore oltre il più grande multiplo esatto dell'intervallo e genera di nuovo – una tecnica chiamata rejection sampling (campionamento per rifiuto). Costa qualche tentativo in più e offre una garanzia esatta: ogni numero tra «Min» e «Max» ha esattamente la stessa probabilità, non quasi la stessa.

Cosa rende un numero davvero casuale? Un numero è abbastanza casuale quando i risultati precedenti non dicono nulla sul successivo – e in pratica esistono tre livelli di questa proprietà. Una comune funzione pseudo-casuale come Math.random() esegue un algoritmo deterministico: chiunque scopra il suo stato interno può ricostruire l'intera sequenza, il che va benissimo per mescolare le diapositive di una presentazione ma non va bene per qualsiasi cosa il cui risultato non debba essere prevedibile. Un generatore crittograficamente sicuro – il livello usato da questo strumento – è anch'esso un algoritmo, ma è progettato per produrre valori imprevedibili a partire da una fonte sicura di casualità di sistema ed è costruito in modo che osservare il suo output non riveli nulla su ciò che verrà dopo. La casualità fisica, che nasce da fonti come il rumore atmosferico o il decadimento radioattivo, è l'unica delle tre a non provenire da un algoritmo – anche se per estrarre un numero in un intervallo la differenza pratica scompare. È proprio per questo che i browser espongono un'API crittografica separata invece di migliorare Math.random(): i due risolvono problemi diversi, e solo uno dei due è sicuro quando il risultato conta davvero per qualcuno.

Una sequenza casuale non è pensata per sembrare casuale agli occhi umani. Estrai dieci numeri tra 1 e 10 e vedrai spesso una ripetizione, una quasi-coppia come 7, 7, 8, o una breve serie che cade tutta su valori alti – e ognuno di questi casi è del tutto normale. La casualità vera è imprevedibile, non uniformemente distribuita: ogni estrazione è indipendente, i numeri precedenti non hanno alcuna influenza su quelli successivi, e nessun numero diventa mai «ritardatario». L'istinto che sostiene il contrario è la fallacia dello scommettitore, ed è lo stesso istinto che rende le persone pessime nel simulare la casualità: se viene chiesto di inventare una sequenza casuale, si evitano le ripetizioni e si distribuiscono i valori in modo molto più uniforme di quanto farebbe mai il caso. Un risultato che sembra sospettosamente ordinato è la firma di un essere umano; la casualità autentica produce invece dei raggruppamenti.

Perché scegliere questo generatore di numeri casuali?

I numeri casuali servono in molte più situazioni di quanto si pensi. Gli insegnanti interrogano la classe senza favoritismi. Streamer e team di marketing sorteggiano i vincitori di giveaway e premi davanti a un pubblico che deve poter credere al risultato. Nei giochi da tavolo, un numero casuale sostituisce un dado perso o decide chi inizia, e le leghe di Fantacalcio stabiliscono l'ordine dell'asta. I team di ricerca selezionano un campione casuale perché i risultati si possano generalizzare oltre le persone che hanno partecipato volontariamente. I team di sviluppo generano dati di test, inizializzano simulazioni e scelgono identificatori durante il QA. Il filo conduttore è un'equità che si può spiegare a posteriori: poiché l'estrazione si basa su una casualità crittografica che nessuno – noi compresi – può influenzare o prevedere, il risultato regge quando qualcuno lo mette in discussione.

Questo generatore di numeri casuali ha alcuni limiti onesti che vale la pena conoscere. La modalità «Senza duplicati» non può estrarre più numeri di quanti ne contenga l'intervallo: venti valori unici tra 1 e 10 non esistono. Le estrazioni sono indipendenti e i risultati precedenti non influenzano quelli successivi, quindi aggiornare la pagina non azzera alcun ciclo: un ciclo del genere non esiste. E anche se i numeri sono crittograficamente forti, un'estrazione qui è una scelta equa e non una previsione: le estrazioni ufficiali delle lotterie usano le proprie apparecchiature fisiche o certificate, e nulla di calcolato nel tuo browser ha alcun collegamento con esse. Entro questi limiti, la garanzia è solida: ogni numero del tuo intervallo ha esattamente la stessa probabilità, a ogni singola estrazione.

FAQ

Questo generatore di numeri casuali è davvero casuale?

Usa la Web Crypto API del browser (crypto.getRandomValues), che attinge la casualità dalla fonte crittograficamente sicura del sistema operativo. A differenza delle semplici funzioni pseudo-casuali, il suo output non presenta schemi sfruttabili nella pratica, e il rejection sampling mantiene ogni numero dell'intervallo ugualmente probabile invece di favorire i valori più bassi.

Come genero un numero casuale in un intervallo specifico?

Inserisci il valore più piccolo nel campo «Min» e il più grande nel campo «Max», poi premi «Genera». Entrambi gli estremi sono inclusi nei risultati, quindi un intervallo da 1 a 10 può produrre sia 1 sia 10.

Posso generare più numeri casuali in una volta sola?

Sì. Imposta il campo «Quantità» sul numero che ti serve (fino a 1000) e il generatore produrrà l'intera lista con un clic. Puoi poi copiare tutti i risultati negli appunti con il pulsante di copia, oppure salvarli su file.

Posso generare più set di numeri contemporaneamente?

Sì. Cambia il «Formato del risultato» da «Nuova riga» a «Separati da spazi» o «Separati da virgole» per far comparire il campo «Numero di set». Impostalo sul numero di estrazioni indipendenti che ti servono – ad esempio venti set da 3 numeri per venti turni di sorteggio – e scegli se i duplicati possono ripetersi tra set diversi.

Posso ordinare i numeri generati?

Sì. Usa l'opzione «Ordinamento» per disporre ogni lista in ordine crescente o decrescente, oppure lasciala su «Nessuno» per mantenere i numeri nell'ordine in cui sono stati estratti.

Come evito i numeri duplicati?

Attiva l'interruttore «Senza duplicati». Con questa opzione attiva, ogni numero generato nella lista è diverso – ideale per sorteggi, estrazioni a premi o divisioni in gruppi. Tieni presente che la quantità non può superare la dimensione dell'intervallo: non puoi estrarre 20 numeri unici tra 1 e 10.

Perché gli stessi numeri continuano a ripetersi?

Perché le estrazioni indipendenti si ripetono, ed è proprio questo l'aspetto della casualità. Ogni estrazione ignora tutte quelle precedenti, quindi in un intervallo da 1 a 10 lo stesso numero che esce due volte di fila ha una probabilità di 1 su 10 ogni volta – un fatto comune, non un difetto. Se ti serve una lista senza ripetizioni, attiva «Senza duplicati»: quell'opzione limita l'estrazione di proposito, non corregge un errore.

Perché una sequenza casuale non sembra casuale?

Perché la casualità vera è imprevedibile, non uniformemente distribuita. Le persone si aspettano che un output casuale sia distribuito in modo ordinato, quindi raggruppamenti, ripetizioni e brevi serie come 7, 7, 8 sembrano errori quando invece sono esattamente ciò che produce il caso. Una sequenza che appare ordinata a un occhio umano è di solito quella che non era casuale.

Posso fidarmi della casualità generata in un browser?

Sì, quando proviene dalla Web Crypto API, come in questo caso. crypto.getRandomValues fornisce valori casuali crittograficamente sicuri a partire dalla casualità di sistema sottostante al browser, non da un PRNG JavaScript. Math.random() è quello di cui diffidare per tutto ciò che conta davvero: è deterministico e non è mai stato progettato per essere imprevedibile.

I numeri casuali possono essere previsti o influenzati?

Qui no. I valori provengono dal generatore crittograficamente sicuro del tuo sistema operativo, quindi osservare i risultati precedenti non rivela nulla sul successivo, e l'estrazione avviene interamente sul tuo dispositivo – non c'è alcun server da manomettere né alcuna richiesta da intercettare. Nemmeno noi possiamo influenzare i tuoi risultati, perché non li vediamo mai.

È adatto per scegliere i vincitori di un giveaway o di un sorteggio?

Sì. Assegna un numero a ogni partecipante, genera un risultato in quell'intervallo e vince chi ha il numero corrispondente. Poiché la fonte è crittograficamente sicura e l'estrazione avviene in locale, l'esito non può essere previsto né influenzato da nessuno, noi compresi – il che lo rende difendibile se un partecipante fa domande. Per una schedina del Lotto o del SuperEnalotto funziona allo stesso modo, ma è una scelta equa e non una previsione: le estrazioni ufficiali non hanno alcun collegamento con essa.

Aggiornare la pagina cambia la casualità?

No, e non ce n'è bisogno. Ogni estrazione chiede già al sistema operativo valori casuali nuovi, quindi i risultati sono indipendenti sia che tu prema «Genera» dieci volte sia che ricarichi la pagina tra un clic e l'altro. Non c'è nessun ciclo da riavviare né alcuno stato che diventi obsoleto – aggiornare la pagina cancella solo i risultati mostrati a schermo.

Il generatore è gratuito, e conservate i miei numeri?

Lo strumento è completamente gratuito e non richiede registrazione. Tutti i numeri vengono generati localmente nel tuo browser e non lasciano mai il tuo dispositivo, quindi non potremmo conservare né vedere i tuoi risultati nemmeno se lo volessimo.