Hello.
I have made a program that rolls a pair of dice and then calculates the percentage of time a number has come up (see output on image). I am having a problem getting the percentages right...mostly because I calculate the average...how would I get the percent??? However, the main problem I have is breaking this program up into 3 classes (as per the assignment). I need to have 3 classes: MainDice(main), Die, and Dice. See the image to get a better understanding. I'll attach my code also:
public class MainDice {
static final int NUMBER_OF_EXPERIMENTS = 1000;
public static void main(String[] args) {
// Find the average number of times a pair of dice has
// to be rolled to get a given total. Do this for
// each possible total roll, 2 through 12, and print
// the results.
double average; // The average number of rolls to get a given total.
System.out.println("Total On Dice Percentage Rolled");
System.out.println("------------- -----------------------");
for ( int dice = 2; dice <= 12; dice++ ) {
average = getAverageRollCount( dice );
System.out.print(dice);
System.out.print(" ");
System.out.println(average);
}
}
static double getAverageRollCount( int roll ) {
// Find the average number of times a pair of dice must
// be rolled to get a total of "roll". Roll MUST be
// one of the numbers 2, 3, ..., 12.
int rollCountThisExperiment; // Number of rolls in one experiment.
int rollTotal; // Total number of rolls in all the experiments.
double averageRollCount; // Average number of rolls per experiment.
rollTotal = 0;
for ( int i = 0; i < NUMBER_OF_EXPERIMENTS; i++ ) {
rollCountThisExperiment = rollFor( roll );
rollTotal += rollCountThisExperiment;
}
averageRollCount = ((double)rollTotal) / NUMBER_OF_EXPERIMENTS;
return averageRollCount;
}
static int rollFor( int N ) {
// Roll a pair of dice repeatedly until the total on the
// two dice comes up to be N. N MUST be one of the numbers
// 2, 3, ..., 12. (If not, this routine will go into an
// infinite loop!). The number of rolls is returned.
int die1, die2; // Numbers between 1 and 6 representing the dice.
int roll; // Total showing on dice.
int rollCt; // Number of rolls made.
rollCt = 0;
do {
die1 = (int)(Math.random()*6) + 1;
die2 = (int)(Math.random()*6) + 1;
roll = die1 + die2;
rollCt++;
} while ( roll != N );
return rollCt;
}
}
Assignment: