Mi propuesta para resolver este ejercicio es:
Código c++:
Ver original
#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){ } 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; 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; } }
pero cuando obtengo los resultados, veo que en el último bucle for cambia el valor de v[6] en cada iteración y realmente no entiendo porqué sucede esto.
Al final la frecuencia absoluta no me sale 1, por lo que se que el problema esta mal.
Espero que puedan ayudarme.
Muchas gracias y un saludo.