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?
- Generazione solo nel browser: i numeri vengono estratti sul tuo dispositivo e non vengono mai inviati altrove
- Casualità tramite Web Crypto API: crittograficamente sicura, non Math.random()
- Nessun modulo bias: il rejection sampling mantiene ogni numero dell'intervallo ugualmente probabile
- Qualsiasi intervallo: da 1 a 10 fino a valori nell'ordine dei miliardi, estremi inclusi
- Modalità «Senza duplicati»: genera una lista senza ripetizioni per sorteggi e divisioni in gruppi
- Più set: diverse estrazioni indipendenti con un solo clic
- Ordinamento e formati di output: crescente o decrescente, nuova riga, spazi o virgole
- Cronologia e salvataggio su file: conservano traccia di un'estrazione che potresti dover giustificare
- Illimitato e gratuito: nessuna registrazione, nessun limite d'uso, nulla sui nostri server
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.