![]() |
Mòdul
4
![]() |
Fonaments de
Programació. Llenguatge C/C++![]() |
Pràctica ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() |
![]() |
Pràctica
d'ampliació ![]() |
![]() |
Simulació del llançament de dos daus
Un dels usos més didàctics de la programació és la que ens permet entendre el concepte de probabilitat. Sense entrar en definicions formals, indicarem que la idea intuïtiva de probabilitat d'un esdeveniment és el límit de la freqüència relativa d'aquest esdeveniment quan el nombre de realitzacions de l'experiència és molt gran. La realització molts cops d'una experiència és una tasca molt adequada per un programa informàtic. En aquesta pràctica simularem el llançament de dos daus moltes vegades i comprovarem les probabilitats de tots els resultats possibles comparant-les amb les freqüències relatives que s'obtindrà.
|
||||
![]() |
Desenvolupament de la pràctica
Definiu un projecte nou anomenat m4p06 i afegiu-li un arxiu de font C/C++ anomenat m4p06.cpp. Escriviu el següent codi:
Explicació del programa Per tal de generar un nombre psudoaleatori enter comprès entre 1 i 6 s'ha de fer servir l'expressió: rand()*6 /32768+1 Aquesta expressió s'ha ficat dintre d'una funció anomenada dau(). D'aquesta forma fem més fàcil la comprensió del codi. La funció dau() és una funció sense arguments que torna un nombre enter pseudoaleatori comprès entre 1 i 6. La línia:
simula el llançament de dos daus i guarda la seva suma en la variable temp. A continuació es suma 1 a la variable freq[temp]. Ja ha sortit en pràctiques anteriors variables indexades com aquesta, en el mòdul 6 es tractarà de forma més extensa el tema de les variables indexades o vectors. L'algorisme intern que utilitza la funció rand() fa servir una llavor o valor inicial per iniciar la seqüència de nombres aleatoris. Per assegurar-nos que cada vegada que s'executi el programa la seqüència serà diferent es fa servir la següent línia que assigna com a valor inicial el nombre enter tornat per la funció time(), que correspon a l'hora en segons del rellotge intern de l'ordinador, com que les diferents execucions del programa es fan en moments diferents, aquest valor inicial serà diferent. La funció srand() és la que assigna aquest valor inicial.
Per fer la comprovació que la simulació del llançament de dos daus correspon al que s'espera, el programa mostra les freqüències absolutes i relatives d'aquest experiment. Es pot comprovar que en el cas en què n sigui molt gran, les freqüències relatives corresponen a les probabilitats teòriques.
|