#pragma warning(disable:4996)
// INCLUDES
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// DEFINES
#define LOWER_DIE 1 // LOWER_DIE must be at least 1
#define UPPER_DIE 10
#define TRIALS 10000
// PROTOTYPES
int genRand(int, int);
int getTwoDieSum(int, int);
// MAIN
int main( int total) {
int numberArray[2 * UPPER_DIE + 1] = { '0', '0', '0', '0', '0', '0', '0','0','0','0','0', '0', '0' };// holds frequency of rolls
int roll = total;
int i = 0;
srand((unsigned int)time(NULL));
for (i = 0; i < TRIALS; i++) {
getTwoDieSum( LOWER_DIE, UPPER_DIE);
numberArray[roll] == numberArray[roll] + 1;
}
printf("ROLL VALUE : FREQUENCY\n");
printf("2\t: %d\n", numberArray[2]);
printf("3\t: %d\n", numberArray[3]);
printf("4\t: %d\n", numberArray[4]);
printf("5\t: %d\n", numberArray[5]);
printf("6\t: %d\n", numberArray[6]);
printf("7\t: %d\n", numberArray[7]);
printf("8\t: %d\n", numberArray[8]);
printf("9\t: %d\n", numberArray[9]);
printf("10\t: %d\n", numberArray[10]);
printf("11\t: %d\n", numberArray[11]);
printf("12\t: %d\n", numberArray[12]);
return 0;
}
// FUNCTION IMPLEMENTATIONS
int genRand(int lower, int upper) {
int range = (upper - lower) + 1;
return rand() % range + lower;
}
int getTwoDieSum( int lower, int upper) {
int rollOne = 0;
int rollTwo = 0;
int total = 0;
rollOne = genRand(lower, upper);
rollTwo = genRand(lower, upper);
total = rollOne + rollTwo;
return total;
}
То, что у меня есть до сих пор, должно генерировать случайные числа, а затем заполнять правильный элемент массива. Продолжает выводить 48 для всех операторов printf(). Есть идеи, где я ошибаюсь? Я думаю, что это в области genRand() или getTwoDieSum(). Я должен использовать следующую оболочку, я не совсем уверен, что все должно делать, поэтому я и ошибаюсь. Также я не совсем уверен, откуда берутся int lower и int upper:
int genRand(int lower, int upper) {
int range = (upper - lower) + 1;
return rand() % range + lower;
}
Мой вопрос больше о том, где я ошибаюсь и откуда берутся значения int lower и int upper, и правильно ли я использую генератор случайных чисел?
Оболочка, которую необходимо использовать:
// INCLUDES
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// DEFINES
#define LOWER_DIE 1 // LOWER_DIE must be at least 1
#define UPPER_DIE 10
#define TRIALS 10000
// PROTOTYPES
int genRand(int, int);
int getTwoDieSum();
// MAIN
int main() {
int numberArray[2 * UPPER_DIE + 1]; // holds frequency of rolls
// initialize numberArray
// seed the random number generator
// roll the dice and keep track of what was rolled in the array
// display results
return 0;
}
// FUNCTION IMPLEMENTATIONS
int genRand(int lower, int upper) {
int range = (upper - lower) + 1;
return rand() % range + lower;
}
int getTwoDieSum() {
// YOUR IMPLEMENTATION GOES HERE
roll
никогда не меняется после приравнивания к итогу. Иroll
- это индекс вашего массива. - person BryanT   schedule 16.03.2016numberArray[roll] == numberArray[roll] + 1;
не действует на соответствующую программу. - person EOF   schedule 16.03.2016int main( int total)
Это неправильное объявление дляmain
. Это должно быть либоint main(void)
, либоint main(int argc, char *argv[])
. Я не знаю, что вы ожидаете отtotal
, но вряд ли это будет работать так, как вы хотите. - person kaylum   schedule 16.03.2016TRIALS
на0
и посмотреть частоту отдельных бросков? Это довольно информативно... или загадочно... в зависимости от того, знаете ли вы свою таблицу ASCII или нет. - person AJNeufeld   schedule 16.03.2016int main_total = getTwoDieSum(LOWER_DIE, UPPER_DIE);
- person kaylum   schedule 16.03.2016