Come una macchina totalmente logica come un computer può generare un numero casuale?

Ci sono due modi che il computer può generare numeri casuali:
È possibile creare una sorta di dispositivo che controlla un evento naturale completamente casuale e invia i risultati al computer. Ad esempio, si potrebbe mettere un pezzo di materiale radioattivo davanti a un contatore Geiger e collegare il contatore Geiger a un computer. Dal decadimento radioattivo è casuale, il contatore Geiger creerebbe numeri veramente casuali. Questo approccio è piuttosto raro, perché molte persone non hanno i contatori Geiger collegati alle loro macchine. È possibile creare una formula che genera unapseudo-casuali numero. Quando si progetta la formula, l'idea è per poter produrre una stringa di numeri che apparirebbe casuale a chi non sapeva che cosa è la formula. Caratteristiche di una buona formula includono:
· Nessuna ripetizione: la sequenza non ciclo intorno e si ripete. Buona distribuzione numerica: se la formula è produrre numeri casuali tra 0 e 9, il numero di zeri, quelli, a due, ecc., che produce dovrebbe essere all'incirca uguale per un lungo periodo di tempo. Mancanza di prevedibilità: non avete alcun modo per prevedere quale sarà il numero successivo a meno che non si conosce la formula e il seme (valore iniziale).
Ecco un esempio di una semplice formula di numeri casuali dal libro "The C Programming Language," di Kernighan e Ritchie:
int Rand () {random_seed = random_seed * 1103515245 + 12345;
ritorno (unsigned int)(random_seed / 65536) % 32768; }
Questa formula presuppone l'esistenza di una variabile denominata random_seed, che inizialmente è impostato su qualche numero. La variabile random_seed viene moltiplicata per 1,103,515,245 e poi 12.345 viene aggiunto al prodotto; random_seed viene poi sostituito da questo nuovo valore. Questo è in realtà un buon pseudo-generatore di numeri casuali. Ha una buona distribuzione ed è non ripetuto. Se lo si utilizza per produrre numeri casuali tra 0 e 9, ecco i primi 20 valori che produce se il seme è di 10:
44607423505664567674
Se si deve produrre 10.000 valori tra 0 e 9, ecco la distribuzione:
0 - 10151-10242 - 10483-9964 - 9885-10016-9967-10068 - 9659-961
Qualsiasi formula numero pseudo-casuale dipende il valore di inizializzazione per avviare la sequenza. Se si inizia con lo stesso seme, si otterrà la stessa sequenza di valori dalla formula. Così se danno il Rand () funzione mostrato sopra il seme di 10 su un computer e guardare il flusso di numeri produce, sarà identico al flusso di numeri prodotti su qualsiasi computer che viene eseguito con un seme di 10. Nel caso il sistema di posizionamento globale, questa riproducibilità è usato come un modo per dare ogni satellite un modello prevedibile ma differente di valori che permette di monitorare il ricevitore GPS.
Per creare una sequenza casuale e imprevedibile , il seme deve essere un numero casuale. Per ottenere questo numero casuale per il seme, la maggior parte dei programmi usano l' ora e la data corrente, convertito in un valore integer (ad esempio, convertita il numero di secondi trascorsi 1° gennaio 1970). Poiché questo è un numero diverso ogni volta che si avvia il programma, si rende un buon seme.
Pubblicato per scopi didattici
Come funziona