Semester 1 Final Program: Coin Flip Probablity

Code

    
    ///name: Nick Cerdan
    ///Period: 6
    ///program name: Semester 1 Final
    ///file name: ProbGenerator.java
    ///date finished; 1/22/16
    
    import java.util.Scanner;
    import java.util.Random;
    
    public class ProbGenerator
    {
        public static void main(String[] args)
        {
            int heads, tails; // I named these 'heads' and 'tails' so they were easy to keep track of, and I made them ints
            heads = 0;        // because they would always be whole numbers, so there was no need to make them doubles.
            tails = 0;
            
            Scanner kb = new Scanner(System.in);
            Random r = new Random();
            
            System.out.println("");
            System.out.println("Semester 1 Final Program!");
            System.out.print("How many time would you like to flip the coin? " );
            int flips = kb.nextInt(); // I made 'flips' an int bc it would always be a whole number, not a decimal.
            while (flips < 1 || flips > 2100000000) // I used a while loop to repeat this section of code 
            {                                       // until the user inputs an appropriate value, however many
                if (flips < 1)                      // times tht may take.
                {
                    System.out.print("You must choose a number greater than 1. Choose again: ");
                    flips = kb.nextInt();
                }
                
                else
                {
                    System.out.print("You must choose a number less than 2.1 billion. Choose again: ");
                    flips = kb.nextInt();
                }
            }
            
            for (int n = 0; n < flips; n++) // I used a for loop because it's the most efficient way to repeat
            {                               // a section of code for a definite amount of times.
                int side = r.nextInt(2);    // I made 'side' an int because I only needed 2 values, 1 and 2.
                
                if (side == 1)
                    heads++;
                else
                    tails++;
            }
            
            System.out.println("");
            System.out.println("You flipped " + heads + " heads");
            System.out.println("and " + tails + " tails.");
            System.out.println("");
            
            double ProbHeads = ((double)heads / flips) * 100; // I made the probablities doubles because they would most 
            double ProbTails = ((double)tails / flips) * 100; // likely not be whole numbers and an int wouldn't justly
                                                              // represent the true probality due to round off.
            System.out.println("The probablity of flipping heads was " + ProbHeads + "%,");
            System.out.println("and the probability of flipping tails was " + ProbTails + "%.");
        }
    }
    
    /* I found that the largest number of flips possible (2.1 billion) would consistently generate the closest to 50% of each side. The fewer number fo flips I would do the more likely the percentages were to flunctuate away from the middle.
    
    
    
    */


            
        
    
    Assignment 100