Strumenti Utente

Strumenti Sito


fisica:informatica:201415:esercitazioni:esercitazione2bis

Questa è una vecchia versione del documento!


Esercitazione numeri casuali

Esercizio 1: Generazione di numero casuali in C

In alcuni casi e' importante riuscire a generare casualmente dei valori all'intero di programmi C per modellare situazioni reali o per testare opportunamente i programmi scritti. In realta' il computer non riesce a generare eventi realmente “a caso” in quanto tutti i programma si basano su una determinata sequenza di azioni. Tuttavia e' possibile avere un comportamento vicino alla casualita' con le sequenze pseudocasuali, che vengono generate con un procedimento deterministico ma mantengono proprieta' statistiche simili a quelle di una vera sequenza casuale.

Inoltre le sequenze pseudocasuali possono, su richiesta, rigenerare la stessa sequenza di numeri. Questo e' molto utile ad esempio in fase di testing del codice.

La generazione di numeri pseudocasuali e' molto complessa. Tutti i linguaggi di programmazione ad alto livello mettono a disposizione delle opportune funzioni per generare una sequenza. In C, per generare una sequenza pseudocasuale si utilizzano due funzioni di stdlib.h: la funzione

void srand(unsigned int seed);

che serve a fissare il seme (seed) ovvero il valore iniziale della sequenza. E la funzione

int rand(void);

che genera un intero nell'intervallo [0,RAND_MAX] ogni volta che viene chiamata.

La srand() deve essere chiamata una sola volta per fissare il seme, successivamente la sequenza puo' essere generata con chiamate successive alla rand().

Partendo dallo stesso valore iniziale si ottiene sempre la stessa sequenza quindi fornendo lo stessp seme a srand() possiamo riprodurre piu' volte la stessa sequenza casuale quando occorre (per testing o altro).

Utilizzare le funzioni srand() e rand() per scrivere un programma C che legge due valori dallo standard input:

  • N (numero degli interi da generare) e
  • seed (seme da utilizzare)

e stampa sullo standard output N valori casuali nell'intervallo [0,2] generati con seme seed. Un esempio di funzionamento del programma e' il seguente

$./generatore
Inserisci N e seed:
3 42
Generati 3 valori interi nell'intervallo [0,2] con seed 42:
1
0
2

suggerimento: leggere attentamente il manuale di srand e rand e utilizzare l'operatore resto %

fisica/informatica/201415/esercitazioni/esercitazione2bis.1425899722.txt.gz · Ultima modifica: 09/03/2015 alle 11:15 (10 anni fa) da Susanna Pelagatti

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki