I need to generate some random booleans. However I need to be able to specify the probability of returning true
. As a results doing:
private Random random = new Random();
random.nextBoolean();
will not work.
One possible solution would be:
private Random random = new Random()
public boolean getRandomBoolean(float p){
return random.nextFloat() < p;
}
I was wondering if there is a better or more natural way of doing this.
EDIT: I guess I am asking whether there is a library class that provides a nextBoolean(float probability) method.
Random object needs to be intialized already.
The approach you're using already is fine.* AFAIK, there's not a standard Java method that will make this code any shorter.
* For non-cryptographic purposes.
1) Yes, i think your approach is valid and I don't see another easier way.
2) There is a library for handling random numbers of different statistical distributions:
http://introcs.cs.princeton.edu/java/22library/StdRandom.java.html
Here's what I'm using. Very similar to FracturedRetina's answer.
This one is based on percentage...
Your way is probably better, code golf-wise, but another way to do it is like this:
Or for 2 in 5, try this: