La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

A.s. 2010/11. Una funzione è un sottoprogramma che svolge un lavoro e restituisce un valore La funzione rand() genera un numero casuale compreso tra 0.

Presentazioni simili


Presentazione sul tema: "A.s. 2010/11. Una funzione è un sottoprogramma che svolge un lavoro e restituisce un valore La funzione rand() genera un numero casuale compreso tra 0."— Transcript della presentazione:

1 a.s. 2010/11

2 Una funzione è un sottoprogramma che svolge un lavoro e restituisce un valore La funzione rand() genera un numero casuale compreso tra 0 e RAND_MAX (una costante, che secondo lANSI C – un protocollo per gli standard di C – deve essere maggiore o uguale di 32767);

3 #include using namespace std; int main() { int x,i; for (i=1;i<=10;i++) { x = rand(); cout << x << endl; } system("Pause"); } Questo programma genera 10 numeri casuali

4 #include using namespace std; int main() { int x,i; for (i=1;i<=10;i++) { x = rand() % 100; cout << x << endl; } system("Pause"); } Ma se voglio invece generare numeri ad es. compresi tra 0 e 99 ? APPLICO LOPERATORE MODULO (RESTO) CIOE il % PRIMA DOPO

5 Per generare numeri compresi tra 0 e N-1 applico il modulo di N: X = rand() % N; Per averli invece tra 1 e N basta sommare 1: X = rand() % N + 1;

6 X = rand() % 6 + 1; (genera numeri tra 0 e 5) Sommando 1 li ottengo tra 1 e 6 (es. del lancio del dado)

7 I numeri tra 20 e 30 sono 11 Quindi genero un numero tra 0 e 10 e sommo 20 (se è zero diventa 20, se è 10 diventa 30)

8 Devo rimescolare lurna da cui vengono estratti i numeri, Con la funzione srand che accetta come argomento un seme (del tipo unsigned int), che insemina la funzione rand, in modo da indurla a generare una diversa sequenza di numeri casuali ad ogni esecuzione del programma, a patto che sia fornito ogni volta un seme diverso. Come ovviare però a questo ultimo inconveniente? Si può fornire come argomento a srand lorario in quellistante, letto dallorologio interno del computer da parte della funzione time PS I wrote a program for calculating current date and time using function time(NULL). I read this function contains total seconds from till now.

9 srand(7); srand(17); Escono sequenze diverse, ma a parità di seme, esce SEMPRE LA STESSA, cioè con seme 7 esce SEMPRE 61, 22, 15, 40 …

10 Per CAMBIARE IL SEME IN MODO CASUALE, posso usare COME SEME (seed) l ora di sistema, che sarà un numero diverso ad ogni esecuzione del programma, permettendo così di ottenere SEQUENZE OGNI VOLTA DIVERSE, perché cambia il seme ogni volta: il valore più aleatorio al quale un programma può accedere è l'istante nel quale viene eseguito: da ciò deriva l'uso dell'argomento time(NULL). Using srand(time(NULL)); makes use of the computer's internal clock to control the choice of the seed. Since time is continually changing, the seed is forever changing. Remember, if the seed number remains the same, the sequence of numbers will be repeated for each run of the program. PS I wrote a program for calculating current date and time using function time(NULL). I read this function contains total seconds from till now.

11 Una macchina produce tondini di ferro che dovrebbero avere un diametro di 20 mm. Sono accettati anche tondini che abbiano un diametro di 5 mm in più o in meno e che vengono considerati di seconda scelta. Gli altri vengono scartati come difettosi. Simulare utilizzando la funzione random una produzione di 1000 tondini con un diametro compreso tra 10 e 30 e indicare quanti sono: I tondini prodotti di prima scelta; Quelli di seconda scelta; Quelli scartati come difettosi.

12 Scrivere un programma che svolga le seguenti operazioni: a. simula una successione di lanci di moneta (Testa o Croce); b. continua a generare lanci di moneta fino a che la condizione di terminazione e' verificata; c. la condizione di terminazione e' la seguente: la sequenza generata contiene almeno 5 esiti uguali consecutivi (es: 5 volte Testa, o 5 volte Croce) d. il programma deve restituire il numero di lanci di moneta che sono stati necessari per verificare la condizione di terminazione (http://wwwold.iit.cnr.it/staff/paolo.santi/LabC/random.htm)


Scaricare ppt "A.s. 2010/11. Una funzione è un sottoprogramma che svolge un lavoro e restituisce un valore La funzione rand() genera un numero casuale compreso tra 0."

Presentazioni simili


Annunci Google