문제

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