Estoy totalmente confundido ahora. Entonces, hay un ejercicio en esta lección que estoy leyendo y me cuesta mucho saber esto porque estoy aprendiendo C por mi cuenta. Aquí está el ejercicio:
Descripción:
Escriba un progtwig que simule los siguientes eventos aleatorios utilizando la función
rand()
en las bibliotecas estándar de C. Estamos interesados en determinar sirand()
realmente parece producir un conjunto aleatorio de valores. Para hacer esto, repetiremos el evento varias veces y veremos con qué frecuencia obtenemos cada uno de los resultados posibles. Sirand()
es verdaderamente aleatorio, y nuestra asignación a los posibles resultados es uniforme, nuestros resultados deberían ser igualmente probables y, por lo tanto, distribuidos uniformemente entre todos los resultados posibles.Los dos eventos serán:
- Lanzar una moneda
- Rodando un dado de seis caras
Repita cada evento:
- 10
- 100
- 1000
- 10,000
- 100,000 veces
Dentro de cada conjunto de repeticiones, cuente la frecuencia con que ocurre cada resultado. Luego, calcule el porcentaje del total de eventos representados por cada resultado.
Ex:
Coin: ---- Flips: 10 Heads: 40% Tails: 60% Die: ---- Rolls: 10 1: 10% 2: 0% 3: 20% 4: 30% 5: 30% 6: 10% ... Coin: ---- Flips: 100000 Heads: 49% Tails: 51% Die: ---- Rolls: 100000 1: 17% 2: 18% 3: 17% 4: 17% 5: 17% 6: 16%
Actualmente tengo:
#include #include int main() { int i, value, n; int flips[2] = {0}; int rolls[6] = {0}; for(n = 10; n <= 100000; n *= 10){ for(i=0; i < n; i++){ value = rand( )%2; flips[value]++; value = rand( )%6; rolls[value]++; } printf("Coin:\n____\n Flips: %d\n",n); printf(" Heads: %d%%\n", ((flips[0] * 100) / n)); printf(" Tails: %d%%\n\n", ((flips[1] * 100) / n)); printf("Die:\n____\n Rolls: %d\n",n); printf(" 1: %d%%\n", rolls[0]); printf(" 2: %d%%\n", rolls[1]); printf(" 3: %d%%\n", rolls[2]); printf(" 4: %d%%\n", rolls[3]); printf(" 5: %d%%\n", rolls[4]); printf(" 6: %d%%\n", rolls[5]); } return 0; }
* Lo siento, realmente no me estoy enfocando en las salidas del dado, solo estoy tratando de hacer que las monedas funcionen
Tomé su código y apliqué mis cambios sugeridos, y también muestro cómo calcular los porcentajes.
#include #include int main() { int i, j, value, n; static const char *sides[] = {"Heads", "Tails"}; int flips[2] = {0}; int rolls[6] = {0}; i = 0; for(n = 10; n <= 100000; n *= 10){ for(; i < n; i++){ value = rand( )%2; flips[value]++; value = rand( )%6; rolls[value]++; } printf("Coin:\n____\n Flips: %d\n",i); for(j = 0; j < 2; j++) { printf(" %s: %d%%\n", sides[j], 100*flips[j]/i); } printf("Die:\n____\n Rolls: %d\n",i); for(j = 0; j < 6; j++) { printf(" %d: %d%%\n", j, 100*rolls[j]/i); } } return 0; }