Goal: Flip a coin a certain number of times, and calculate the resulting probabilities from how many times heads and tails were rolled.
/// Name: Cornelius Eanes
/// Period: 5
/// Program Name: (Final Exam 1) Display Probability
/// File Name: DisplayProbability.java
/// Date Finished: Jan 20, 2016
import java.util.Random;
import java.util.Scanner;
public class DisplayProbability {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
Random rand = new Random();
int flips, heads = 0, tails = 0;
System.out.print("Choose how many times you want to flip a coin: ");
do {
flips = input.nextInt();
if (flips <= 0) {
System.out.println("Please enter a number higher than 0.");
}
} while (flips <= 0);
// I assign a new variable specifically for the loop.
// I want to keep the original value for the results display.
int i = flips;
// Instead of decreasing i at the end of the loop, I decrease it
// after its comparison so there's less code cluttering up the file.
while (i-- > 0) {
/* If the boolean is true, then we call it heads, otherwise, tails
I used Random#nextBoolean() as opposed to nextInt(2) because
otherwise, I would have to assign a variable, and check to see what
it's equal to. With my approach, it's both simple to read and quick to run. */
if (rand.nextBoolean()) {
heads++;
} else {
tails++;
}
}
System.out.println("Number of flips: " + flips);
// Casting one of the values to a double forces the output to become a double
double headsProbability = (double) heads / flips;
double tailsProbability = (double) tails / flips;
System.out.println("Number of heads: " + heads);
System.out.println("Number of tails: " + tails);
System.out.println("Probability of heads: " + headsProbability);
System.out.println("Probability of tails: " + tailsProbability);
/*
The more flips are made, the closer to 0.5 and 0.5 we get for the probabilities.
So, the maximum integer value (2^31 - 1) will yield the most accurate results.
*/
}
}