Usar rand () al lanzar una moneda y tirar un dado

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 si rand() 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. Si rand() 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:

  1. Lanzar una moneda
  2. Rodando un dado de seis caras

Repita cada evento:

  1. 10
  2. 100
  3. 1000
  4. 10,000
  5. 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; }