domingo, 31 de octubre de 2010

Deitel_C++_3.34 (Lanzamiento de una Moneda Cien Veces en C++ )

_____________________________________________________________________________________
3.34 Escriba un programa que simule el lanzamiento de una moneda. Por cada lanzamiento el programa debe desplegar Cara o Cruz. Deje que el programa lance la moneda 100 veces y cuente el número de veces en que aparece cada uno de los lados de la moneda. Despliegue los resultados. El programa debe llamar a la función flip que no tome argumentos y que devuelva 0 para cruz y 1 para cara. [Nota: Si el programa en realidad simula el lanzamiento de una moneda, entonces cada lado de la moneda debe aparecer aproximadamente la mitad de las veces.]
_____________________________________________________________________________________
Solución
Este programa simula el lanzamiento de una moneda cien veces. Desde luego, el resultado será aproximadamente 50 % de caras y 50 % de cruces. Este problema me recuerda una plática con un físico: Un profesor de estadística pide a sus alumnos que de tarea lancen una moneda 100 veces y anoten los resultados. Al día siguiente todos entregan la tarea y el profesor la revisa. Sorprendentemente el hombre acertaba a decir si el alumno de verdad había realizado los experimentos o sólo había inventado los datos. ¿Cómo lo sabía? Cuando se lanzan las monedas, la probabilidad de obtener una racha de 5 caras o 5 cruces seguidas es muy alta. Prácticamente debe haber por lo menos una racha de 5. Cuando alguien inventa los datos, no se le ocurre poner tal racha. Revise las corridas para ver cómo funciona su generador de números aleatorios.

//Simulacion del lanzamiento de una moneda.
#include <iostream> #include <cstdlib> #include <ctime> using namespace std; int flip (void); //////////////////////////////////////////// // FUNCION MAIN //////////////////////////////////////////// int main() { int value, cruz = 0, cara = 0; srand (time (NULL)); cout <<endl<<endl<<"Simulacion del lanzamiento de una moneda." << endl; for (int n =1; n<=100; ++n) { value = flip(); if (0 == value) { cout <<"Cruz\n"; ++cruz; } else { cout <<"Cara"<<endl; cara++; } } cout << endl<<"Numero de caras: " << cara << endl; cout << "Numero de cruces: "<<cruz<<endl; return 0; } //////////////////////////////////////////////////////////// // FUNCION FLIP /////////////////////////////////////////////////////////// int flip (void) { return rand() % 2; }

No hay comentarios:

Publicar un comentario

Related Posts Plugin for WordPress, Blogger...