Ver Mensaje Individual
  #7 (permalink)  
Antiguo 20/09/2010, 04:06
jbgae
 
Fecha de Ingreso: septiembre-2010
Mensajes: 6
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Fallo en programa que muestra la frecuencia aparece caras de un dado

Muchas gracias a todos, ya lo he entendido perfectamente.
A continuación dejo la solución ya corregida.
Código C++:
Ver original
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <ctime>
  4. using namespace std;
  5.  
  6. //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
  7. //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
  8. //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].
  9. int Numero_Pseudoaleatorio(int a, int b){
  10.   return a+(rand()&#37;(b-a+1));
  11. }
  12.  
  13. int main()
  14. {
  15.   const int a=1, num_caras = 6;
  16.   const float num_tiradas = 10000000;
  17.   int v[num_caras], num_pseudo = 0;
  18.   for(int i=0; i<=num_caras-1; i++)     // Inicializamos el vector a 0
  19.     v[i]=0;
  20.   srand(time(0));   // Usaremos como semilla un valor variable para poder observar distintos resultados en cada ejecución.
  21.   for(int i=0; i<=num_tiradas-1; i++){  //realizamos las 10000000 tiradas del dado
  22.     num_pseudo = Numero_Pseudoaleatorio(a,num_caras);   //almacenamos el resultado de la tirada (valor de la cara del dado)
  23.     v[num_pseudo-1]++;  //incrementamos las veces que aparece cada valor.
  24.   }
  25.   for(int i=0; i<=num_caras-1; i++){ //mostramos las frecuencias relativas.
  26.     cout << "La frecuencia relativa de " << i << " es: " << v[i]/num_tiradas << endl;
  27.   }
  28. }

Saludos.