Una delle pratiche più affascinanti del mondo dell’informatica è senza dubbio quella della “random number generation”, ovvero la costruzione di algoritmi che hanno una funzionalità ben specifica: generare numeri completamente casuali all’interno di una macchina che invece ha bisogno di un ordine perfetto per poter funzionare correttamente.
La generazione di numeri casuali, infatti, è una delle funzionalità più allo stesso tempo affascinanti e delicate dell’informatica in quanto è fondamentale in una montagna di applicazioni diverse: dai videogiochi al mondo della sicurezza informatica, dal funzionamento delle slot machine passando per le simulazioni scientifiche e anche il machine learning! Il concetto di casualità è un mattone fondamentale per tantissime applicazioni digitali: un mattone costruito su algoritmi, teorie matematiche e sfide ingegneristiche.
Tra “vero caso” e “finto caso”
All’interno del contesto naturale la casualità pura è un fenomeno onnipresente ma estremamente difficile da prevedere e, sopratutto, sintetizzare. In informatica i computer lavorano seguendo le leggi deterministiche e per tanto non riescono a generare un numero davvero casuale senza una fonte esterna di entropia alla quale fare riferimento; per questo motivo al momento la stragrande maggioranza degli strumenti sono di “pseudo-random number generation”, ovvero algoritmi che sono in grado di generare numeri che sembrano casuali ma che in realtà sono soltanto il risultato di formule matematiche ben precise.
Alcuni di questi algoritmi sono arcinoti, come il mersenne twister o il linear congruential generationl, e tutti quanti condividono un punto di partenza chiamato “seed”, necessario per generare una sequenza che può apparire come casuale; questo significa che conoscendo il seed e il tipo di algoritmo è possibile ricreare esattamente la stessa lista di numeri, portando a vantaggi e svantaggi di vario tipo. Molto più ricercati ma anche “difficile” sono gli algoritmi TRNG, o true random number generator, ovvero algoritmi che partendo da fenomeni fisici realmente imprevedibili (decadimento radioattivo, fluttuazioni quantistiche, rumore termico di un circuito e così via) riescono a produrre numeri privi di qualsiasi schema ricostruibile.
Quali sono le applicazioni per questi strumenti?
Attraverso la generazione dei numeri casuali gli informatici sono riusciti a creare strumenti e applicazioni in settori diversissimi tra loro, spesso e volentieri con ruoli cruciali. Nei videogiochi i numeri casuali permettono di costruire meccaniche intere, sul fronte della sicurezza informatica i generatori di numeri casuali sono al cuore della crittografia moderna, nel mondo dei casinò i generatori permettono agli utenti di avere un’esperienza paragonabile a quella del gioco nel mondo reale. Anche la ricerca scientifica e l’alta ingegneria utilizzano gli strumenti di RNG per effettuare simulazioni come quelle di tipo Montecarlo, dove migliaia e milioni di iterazioni permettono di prevedere grossolanamente il comportamento di sistemi complessi come l’andamento dei mercati finanziario o le reazioni chimiche all’interno di un laboratorio virtuale.
La scienza però non si ferma e ci sono già studiosi che parlano della prossima frontiera della generazione casuale di unmeri utilizzando il mondo quantico; la QRNG, o quantum random number generation, è una branca che studia come sfruttare fenomeni intrinsecamente imprevedibili della meccanica quantistica al fine di creare sequenze di numeri senza sfruttare alcuna tipologia di pattern. Questo permetterà di costruire dispositivi commerciali in grado di incorporare generatori quantistici dagli usi più disparati: crittografia, blockchain, sicurezza nazionale e chi più ne ha più ne metta!
