lunedì 24 settembre 2012

Generare un numero casuale

Generare un numero casualmente, per creare imprevisti, aggiunge eccitazione ad un gioco. Il cambio di strategia esercitato da un simulatore degli scacchi o l'improvvisa apparizione di una creatura nemica in un FPS, introduce nel giocatore il fattore sorpresa.
Per richiamare la funzione rand(), per prima cosa è necessario include un nuovo file libreria nel programma.
#include<cstlib>
Questo file contiene tra le altre cose, una funzione che permette di generare numeri casuali. Una volta incluso il file, siamo liberi di richiamare la funzione che contiene rand(), la quale viene inserita nella funzione main().
int numerocasuale = rand();
Utilizzando questa funzione viene generato un numero casuale assegnato alla variabile intera numerocasuale, questo valore viene generato come ritorno dalla funzione. Questa funzione come si capisce dalle due parentesi chiuse non ha bisogno di argomenti per essere richiamata.

Generare un seme per il generatore numerico

I computer a differenza di un dado fisico lanciato varie volte, possono generare solo numeri pseudocasuali basati su una formula. Un modo di pensare è che la funzione rand() legge da un grande libro di numeri casuali predeterminati. Ma la funzione rand() inizia sempre da un punto diverso la lettura di questo libro. Per modificare il punto di inizio della funzione vien utilizzato l'orologio interno del calcolatore utilizzando la libreria ctime. Pertanto viene determinato il seme mediante la funzione: 
srand(time(0)); 
Questa funzione è corretta in quanto time(0) restituisce un numero basandosi sull'ora corrente, la quale costituisce il seme per il valore casuale.

Calcolare un numero casuale in un intervallo

Dopo aver generato un valore intero mediante la funzione srand(), il valore casuale determinato è compreso tra 0 e 32677, per limitare questo intervallo si utilizza quindi l'operazione matematica modulo.
int dado = (numerocasuale % 6)+1;
In questo caso simuliamo un dado a 6 facce che può assumere un valore numerico casuale compreso tra 1 e 6, il risultato che volevamo ottenere vien ottenuto sommando 1 al valore dell'operazione modulo.

Nessun commento:

Posta un commento