Программа для симуляции броска 2 кубиков в C (Как исправить мой неверный вывод?) - PullRequest
0 голосов
/ 13 марта 2020

Мне нужно бросить два кубика 36 000 раз и использовать одномерный массив, чтобы подсчитать, сколько раз каждое число появляется (2-12, где 7 - самая частая сумма, а 2 и 12 - самая частая сумма). Мой вывод просто выходит с целой таблицей, равной 0. Что я делаю неправильно?

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int diceRoll(int die1, int die2, int tally[]);

int main(void) {

  int x;
  int y;
  int z[13] = {0};
  int sums = diceRoll(x, y, z);

  srand(time(NULL));

  for (int i = 2; i <= 12; i++)
  {
     printf("%3d%12d\n", i,sums);
     sums += sums;
  }
  printf( "\nTotal number of rolls is %d",sums );
  return 0;
}

int diceRoll(int die1, int die2, int tally[]) {   

  for(int i = 1; i <= 36000; i++) {
      die1 = 1 + rand() % 6;
      die2 = 1 + rand() % 6; 
      tally[die1 + die2]++;
  }
  return 0;
}``` 

1 Ответ

2 голосов
/ 13 марта 2020

Исправлено несколько строк кода:

for (int i = 2; i <= 12; i++)
{
   printf("%3d%12d\n", i,z[i]);
   sums += z[i];
}
printf( "\nTotal number of rolls is %d\n",sums );

Вывод

  2         989
  3        2009
  4        3052
  5        4091
  6        4983
  7        5965
  8        4897
  9        4048
 10        3066
 11        1965
 12         935
...