Numeri casuali

Generare numeri casuali attraverso un algoritmo può apparire un controsenso, in quanto ogni programma è per definizione deterministico. Qualunque software genererà dunque un risultato interamente predittibile, e mai veramente casuale.

Nonostante ciò, esistono in letteratura molti studi teorici di questi algoritmi, e molte applicazioni (crittografia, simulazioni Monte Carlo) richiedono la generazione di numeri casuali. Una definizione di casualità utilizzabile in questo contesto è dire che il programma che genera i numeri casuali deve essere differente e statisticamente non correlato (in tutti gli aspetti misurabili) con il programma che usa il suo output. Questa definizione implica che, dati due generatori di numeri casuali differenti, utilizzati per una stessa applicazione, devono dare statisticamente lo stesso risultato. Se non avviene così, almeno uno dei due non è un buon generatore di numeri casuali.

Per questi algoritmi alcuni preferiscono parlare di pseudo-casualità, mentre con processi casuali ci si riferisce a processi intrinsecamente casuali, come il tempo che intercorre tra due battiti di un contatore Geiger. Nel resto della trattazione utilizzeremo equivalentemente i due termini.

La definizione di casualità per un algoritmo implica che una sequenza sia casuale solo in rapporto ad altri generatori di numeri casuali e a problemi specifici. Risulta dunque difficile stabilire la bontà di un generatori di numeri casuali in assoluto, esistono tuttavia alcuni test statistici che permettono di testare la pseudo-casualità nei casi d'uso più frequenti.

Generatori uniformi di numeri casuali[modifica | modifica wikitesto]

La densità di probabilità di un generatore uniforme [...]

La densità di probabilità di una distribuzione uniforme, la distribuzione di un generatore lineare congruente.
Successivo