Search code examples
javaprobabilitycoin-flipping

Simulate the tossing of a coin three times and print out the percentage of cases in which one gets three tails


Attached is the problem: http://puu.sh/42QtI/ea955e5bef.png

In terms of code, this is what I have so far

The question asks to "calculate the simulated percentage of three tails," which is the part I am stuck on. Could someone give me some insight on what to progress next?

public static boolean isThreeTails(){
            Random rand = new Random();
            int numberOfTosses = 3;
            int numberOfHeads = 0;
            int numberOfTails = 0;

            for(int i = 1; i <= numberOfTosses; i++){
                int value = rand.nextInt(2);
                if(value == 0){
                    numberOfTails++;
                }else{
                    numberOfHeads++;
                }
            }
            if(numberOfTails == 3){
                return true;
            }
            else{
                return false;
            }
        }

double numTosses = 1000000; //choose whatever here
        double threeTails = 0;
        for(int i =0; i < numTosses; i++){
            if(isThreeTails()){
                 threeTails++;
            }
        }
        System.out.println("Theoretical probability of 3 Tails: " + (double) 1/8);
        System.out.println("Actual results for " + numTosses + " tosses = " + threeTails/numTosses);

EDIT: Here, I am creating a counter for when there are triple tails. It would increment the numberOfTripleTails counter. If it rolls a "H", the numberOfTails would simply go back to zero. However, my code seems to only give '3' as an answer.

EDIT 2: Done!


Solution

  • The method that you have already written simulates three tosses. I've modified that method so that it is now a callable function isThreeTails()

    public static boolean isThreeTails(){
        Random rand = new Random();
        int numberOfTosses = 3;
        int numberOfHeads = 0;
        int numberOfTails = 0;
    
        for(int i = 1; i <= numberOfTosses; i++){
            int value = rand.nextInt(2);
            if(value == 0){
                numberOfTails++;
            }else{
                numberOfHeads++;
            }
        }
        if(numberOfTails == 3){
            return true;
        }
        else{
            return false;
        }
    }
    

    Now you will want to call this method from the main method of ThreeTosses.java

    double numTosses = 100; //choose whatever here
    double threeTails = 0;
    for(int i =0; i < numTosses; i++){
        if(isThreeTails()){
             threeTails++;
        }
    }
    System.out.println("Theoretical probability of 3 Tails: " + (double) 1/8);
    System.out.println("Actual results for " + numTosses + " tosses = " + threeTails/numTosses);