martedì 25 settembre 2012

Generare un numero casuale II

Un modo estremamente semplice per costruire un generatore di numeri pseudocasuali dotato di maggiore entropia, è il seguente.

srand(time(0)); // seme numero casuale
 int primi[10]= {11,23,7,19,2,13,31,5,3,29};
for (int c=0;c < 10;c++){
dado = (rand()* primi[c]) %6 + 1;
}

La nostra funzione rand() restituisce un valore intero, il quale viene moltiplicato con un valore proveniente da un vettore di numeri interi primi disposti casualmente. Il valore prodotto viene sottoposto all'operazione modulo la quale ci restituisce un valore numerico nella scala di valori scelta. Poichè la sequenza di valori nel vettore è stata scelta casualmente dal programmatore essa introduce un elemento di disordine alla funzione peseudocasuale. E' possibile definire più vettori o utilizzare intervaslli numerici diversi all'interno di uno stesso vettore per aumentare la casualità di altre funzioni utilizzate nel programma che necessitino di generare numeri casuali.

Nessun commento:

Posta un commento