A Java method that returns a random boolean value based on a probability

If you ever need a Java method that returns a boolean value based on a given probability, I can confirm that this method works:

/**
 * `probability` should be given as a percentage, such as
 * 10.0 (10.0%) or 25.5 (25.5%). As an example, if `probability` 
 * is 60% (60.0), 100 calls to this function should return ~60 
 * `true` values.
 * (Note that Math.random returns a value >= 0.0 and < 1.0.)
 */
static boolean getRandomBoolean(float probability) {
    double randomValue = Math.random()*100;  //0.0 to 99.9
    return randomValue <= probability;
}

As noted in the comments, if the method is given a probability of 60.0 and it’s called 100 times, on average it will return the value true 60 times, and false 40 times. Put another way, if you want a boolean value about 60% of the time, call this method with the value 60.0.

Calling the method

I use this boolean probability method with my Java/Android football game. I specifically use it when a user wants to kick a field goal, in which case the getRandomBoolean method is called like this:

public static boolean fieldGoalWasGood(int distance) {
    float fgAccuracy = 0f;

    if (distance < 20) fgAccuracy = 99f;
    else if (distance < 30) fgAccuracy = 98f;  //20-29
    else if (distance < 40) fgAccuracy = 96f;  //30-39
    else if (distance < 45) fgAccuracy = 93f;  //40-44
    else if (distance < 50) fgAccuracy = 90f;  //45-49
    else if (distance < 55) fgAccuracy = 80f;  //50-54
    else if (distance < 60) fgAccuracy = 33f;  //55-59
    else if (distance < 64) fgAccuracy =  8f;  //60-63
    else fgAccuracy = 0f;

    return getRandomBoolean(fgAccuracy);
}

I prefer to deal in probability values from 0 to 100%, which is why I convert the value r from (a) 0.0 to 1.0 to (b) 0.0 to 100.0 in getRandomBoolean.

In summary, if you ever need a Java method/function that returns a boolean value based on a given probability, I hope this source code is helpful.

Add new comment

Anonymous format

  • Allowed HTML tags: <em> <strong> <cite> <code> <ul type> <ol start type> <li> <pre>
  • Lines and paragraphs break automatically.