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();
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top