PDA

View Full Version : Esercizio in C


83genesis
23-01-2005, 14:44
Qualcuno sà risolvermi questo esecizio se è possibile!


1) algoritmo per la simulazione del lancio di tre dadi. L’algoritmo usa la function rand() in <stdlib.h> per generare numeri casuali; per esempio, se numero_casuale è dichiarato di tipo int, allora la chiamata numero_casuale=rand()%10; genera un numero casuale intero (distribuzione uniforme) nell’insieme (0,1,2,3,4,5,6,7,8,9). Un dado ha sei facce con valori da 1 a 6. Usare la rand() per lanciare a caso 3 dadi (una chiamata rand per ogni lancio di un dado). Ripetere 30000 volte il lancio e alla fine visualizzare il numero di volte in cui si è ottenuto 2, il numero di volte in cui si è ottenuto 3, e così via fino al numero di volte in cui si è ottenuto 18. Dividere i numeri così ottenuti per 300 (ovvero dividere per 30000 e moltiplicare per 100, che fornisce la percentuale di successo) e visualizzarli scrivendo:
2 è stato ottenuto n volte (percentuale m%);
3 è stato ottenuto p volte (percentuale q%);
…………
18 è stato ottenuto r volte (percentuale s%);

Ziosilvio
23-01-2005, 15:03
Originariamente inviato da 83genesis
Qualcuno sà risolvermi questo esecizio se è possibile!
Gli esercizi ti vengono assegnati perché li risolva tu, non perché tu li faccia risolvere agli altri.

Comunque, ho qualche commento da fare sulla traccia:
1) algoritmo per la simulazione del lancio di tre dadi. L’algoritmo usa la function rand() in <stdlib.h> per generare numeri casuali; per esempio, se numero_casuale è dichiarato di tipo int, allora la chiamata numero_casuale=rand()%10; genera un numero casuale intero (distribuzione uniforme) nell’insieme (0,1,2,3,4,5,6,7,8,9).
Uno: la distribuzione di rand()%10 è uniforme se e solo se RAND_MAX+1 è un multiplo di 10. Due: se fai la congruenza modulo 10, corri il rischio di far venir fuori un generatore con dei grossi difetti.
Ne abbiamo parlato parecchio in questa sezione, recentemente: cerca tra i vecchi post.

Per il resto: l'esercizio sembra fattibile usando gli array e facendo un po' di attenzione alle conversioni tra int e double.

repne scasb
23-01-2005, 20:32

AnonimoVeneziano
24-01-2005, 18:58
Originariamente inviato da repne scasb


for(i=N_DADI;i<=N_DADI*FACCE_DADI;i++)
*(n_times+i)=0;





A che serve se l'array è già azzerato da "calloc" ?

Ciao

repne scasb
24-01-2005, 20:13