Inviato da WarriorXP Da alcune settimane mi frulla nella testa una domanda: come fanno i programmatori dei linguaggi a rendere la pseudocasualità?
Di regola sono accettate solamente operazione aritmetiche dall'elaboratore, lasciando la casualità all'uomo, l'unico in gradi di renderla.
Come fanno a riprodurla?
Ci sono vari metodi: nel kernel di linux, per esempio, è presente un random number generator, che altro non è che un generatore di entropia utilizzato sopratuttto per la generazione di chiavi di protezione. In alternativa, si possono creare algoritmi che sfruttino il clock della CPU e altri parametri (come input da tastiera e altro) legati in maniera che il risultato sia il più casuale possibile.
Nei casi dove l'entropia è fondamentale, si possono usare i frattali, formule matematiche ad altissima entropia che modificano radicalmente il valore finale anche per infinitesimali variazioni dei parametri iniziali.
Se sei interessato ti consigliato di dare un'occhiata a qualche sito che affronti il problema della crittografia, o leggerti per bene i manuali del PGP: offrono parecchie informazioni interessanti sui generatori hardware o software di entropia.
Generalmente si utilizzano valore che dipendono dal clock o dall'orologio di sistema;in C++ ad esempio con la funzione rand() e la libreria time.h si ottiene una "pseudocausalità" come l'hai definita tu.
I valori dipendono da una costante massima (superiore a 2byte) o dal numero di dati che si vuole ottenere (aggiungendo % N, dove N è il numero di dati... ad esempio N=6 per le facce di un dado, N=2 per le facce di una moneta e così via).
He who is not bold enough to be stared at from across the abyss
is not bold enough to stare into it himself.
In genere si utilizza il clock.
Anche nelle calcolatrici (alcune hanno la funzione random) per esempio, se non sbaglio il numero casuale viene elaborato il base alla frequenza del chip, ma non so bene in che modo.
In qualche caso, avevo letto che in qualche modo si andava a leggere il valore della tensione o cose del genere..........
Ultima modifica di Yubei; 10-06-2003 alle 22:53:32
Negli esempi che ho visto io finora ( c++ ) si utilizzava srand passando come dato il timer del pc per generare un seme che poi veniva sfruttato da rand per rendere davvero casuale o pseudocasuale la scelta dei numeri.