Programa Dado
Enviado por 091009 • 22 de Abril de 2013 • 418 Palabras (2 Páginas) • 306 Visitas
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
//Función que genera un número pseudoaleatorio entero en el intervalo discreto [a, b].Conseguir un entero entre [a,b] es igual a conseguirlo
//entre a + [0, b-a]. Para conseguir enteros entre 0 y b-a recurrimos al resto de la división entera, ya que el resto de dividir cualquier
//número entre b-a+1 nos da valores entre 0 y b-a, a los cuales les sumaremos el valor a obteniendo así enteros del intervalo [a, b].
int Numero_Pseudoaleatorio(int a, int b){
return a+(rand()%(b-a+1));
}
int main()
{
const int a=1, num_caras = 6;
const float num_tiradas = 10000000;
int v[num_caras], num_pseudo = 0;
for(int i=1; i<=num_caras; i++) // Inicializamos el vector a 0
v[i]=0;
srand(time(0)); // Usaremos como semilla un valor variable para poder observar distintos resultados en cada ejecución.
for(int i=1; i<=num_tiradas; i++){ //realizamos las 10000000 tiradas del dado
num_pseudo = Numero_Pseudoaleatorio(a,num_caras); //almacenamos el resultado de la tirada (valor de la cara del dado)
v[num_pseudo]++; //incrementamos las veces que aparece cada valor.
}
cout << "****muestra el número de veces que aparece cada cara****" << endl;
cout << "cara 1 -----> " << v[1] << endl;
cout << "cara 2 -----> " << v[2] << endl;
cout << "cara 3 -----> " << v[3] << endl;
cout << "cara 4 -----> " << v[4] << endl;
cout << "cara 5 -----> " << v[5] << endl;
cout << "cara 6 -----> " << v[6] << endl;
float suma = 0;
for(int i=1; i <=num_caras; i++){ /* EN ESTE BUCLE ESTA EL PROBLEMA, ¿PORQUE V[6] CAMBIA SU VALOR? */
cout<< "cara 6 -->" << v[6] << endl; /*HAGO ESTO PARA COMPROBAR QUE V[6] CAMBIA SU VALOR AL ENTRAR EN EL BUCLE Y SE VA INCREMENTANDO*/
cout << "La frecuencia relativa de " << i << " es: " << v[i]/num_tiradas << endl;
suma = suma + v[i]/num_tiradas;
cout << " frecuencia absoluta = " << suma << endl;
}
}
...