Originally Posted by
Dave_Sinkula
Perhaps you should increment an array member when its result occurs?
Seems to work. I just had to sit and stare at it for a while. Just need to tweak a bit to get %
Code:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define SIZE 13
int rollDice(void);
int main ()
{
int roll, sum, freq[SIZE] = {0};
float expected[SIZE] = {0,0,1,2,3,4,5,6,5,4,3,2,1}, actual[SIZE] = {0};
srand(time(NULL));
for (roll= 1; roll <= 36000; roll++)
{
sum = rollDice();
++freq[sum];
++actual[sum];
}
printf("%s%10s%12s%12s\n", "Sum", "Total", "Expected", "Actual");
for (sum =2; sum <= SIZE -1; sum++)
{
printf("%2d%10d%12f%12f\n", sum, freq[sum], expected[sum]/36, actual[sum]/36000);
}
return 0;
}
int rollDice(void)
{
int die1;
int die2;
int worksum;
die1 = 1 + ( rand() % 6 );
die2 = 1 + ( rand() % 6 );
worksum = die1 + die2;
return worksum;
}