Question

I really thought this would work, but when I ran it, I always get some random huge decimal and it makes no sense. The logic is right, so why doesn't the code work?

do{
  value = rnd.nextDouble();
}while(value>min && value<max);

Keep in mind "min" and "max" are actually functions that do some simple arithmetic operations then return that value, but I just put min and max for simplicity so I don't have to post the entire class.

Was it helpful?

Solution

You can declare a start and end variables (int or double), and use nextDouble() like:

value = rnd.nextDouble() * (end - start) + start;

Remember that:

public double nextDouble() Returns the next pseudorandom, uniformly distributed double value between 0.0 and 1.0 from this random number generator's sequence.

OTHER TIPS

The nextDouble method returns a random double value between 0.0 inclusive, and 1.0 exclusive. You can translate the range by adding the min value and scale the range up by multiplying it by the difference between max and min.

value = (rnd.nextDouble() * (max - min)) + min;

To generate a random value between rangeMin and rangeMax:

 Random r = new Random();
 double randomValue = rangeMin + (rangeMax - rangeMin) * r.nextDouble();
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top