how do i get a random double within a specified ra

2019-09-20 01:07发布

问题:

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.

回答1:

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.



回答2:

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;


回答3:

To generate a random value between rangeMin and rangeMax:

 Random r = new Random();
 double randomValue = rangeMin + (rangeMax - rangeMin) * r.nextDouble();