Una delle operazioni più difficili che si può far compiere ad un processore è riprodurre un comportamento casuale: lancio di dadi, testa o croce, generare un numero random a comando; tutte queste sono operazioni che vengono digerite con un po’ di difficoltà dal cuore pulsante dei computer moderni per una pletora di motivazioni diverse.
La prima (e più nota) è data proprio dalla natura del computer: esso non è in grado di pensare come potremmo far noi se ci riferiamo al casuale ma, invece, è solo in grado di eseguire degli ordini.
Poiché il numero casuale è un numero scelto in un insieme dato senza una regola precisa, generarne uno all’interno di un macchinario che legge un linguaggio fatto di regole diventa piuttosto complicato; se i numeri sono diversi tra loro allora la relazione che li lega è l’assenza di correlazione statistica.
Per ovviare a questo problema gli informatici hanno portato avanti due diverse scuole di pensiero: PRNG e TRNG.
Generare numeri casuali in informatica: questione di punti di vista.
Partiamo con i PRNG o Pseudo Random Number Generator.
Come funziona un generatore di numeri pseudo casuali?
Con un trucco chiamato generatore lineare congruenziale, ovvero con un sistema che è in grado di generare delle stringhe di numeri che sono molto vicine alla casualità senza esserlo davvero. Questo risultato si ottiene, di solito, attraverso l’utilizzo di uno o più algoritmi legati ad una formula matematica particolare.
La caratteristica del modello PRNG è quella di essere in grado di generare un grande numero di sequenze casuali in pochissimo tempo, senza dimenticare che data la sua natura pseudo casuale, è in grado di riprodurre esattamente la stessa stringa di numero presupposto lo stesso valore di partenza.
Il suo utilizzo, come vedremo dopo, sarà molto specifico.
Con l’acronimo TRNG (True Random Number Generator), invece, si va a parlare di un generatore di numeri casuali che utilizza un fenomeno fisico per dedurre dei veri numeri casuali. Questo vuol dire che, sfruttando un elemento esterno il computer prova a generare un numero casuale. Questi elementi esterni possono essere guidati dall’utente (in base alle tipologie di input utilizzate dalla macchina) o possono essere legate a dei fenomeni di carattere fisico (temperatura del computer, velocità di rotazione delle ventole e così via). L’importante per questo sistema è evitare un qualcosa di riproducibile in maniera semplice.
Le caratteristiche di questa tipologia di sistema sono la lentezza e l’incapacità di poter riproporre (come prevedibile) per due volte la stessa sequenza di numeri data la combinazione di partenza.
Ciò rende questa scuola di pensiero perfetta per determinate attività.
Come si usano questi sistemi di generazione numeri casuali?
I due modelli che abbiamo visto qui sopra sono i due sistemi più comuni che utilizziamo per fare generare ad un computer una stringa o più stringhe di numeri che possano definirsi come casuali. La casualità nel mondo dell’informatica è utilizzata per una miriade di cose diverse ed ogni modello ha caratteristiche specifiche che lo rende più o meno adatto a dei compiti.
Il modello True Random Number Generator, data la sua capacità di essere davvero casuale, è perfetto per il mondo della crittografia o del gioco d’azzardo online (è infatti utilizzato all’interno dei casino non aams sicuri). In entrambe le situazioni, per motivazioni leggermente diversi, è importante che manchi del tutto l’elemento deterministico delle sequenze.
Il modello Pseudo Random Number Generator, invece, con la sua velocità si rivela adatto per operazioni che devono essere riproducibili: in questo caso parliamo di videogiochi, simulazioni di modelli statistici, specifiche funzioni all’interno dei comuni programmi di gestione dell’ufficio e così via. Anche in particolari sistemi crittografici è possibile usare un generatore PRNG.