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.
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.
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();