What steps will reproduce the problem?
For example, create random double number with min == -Double.MAX_VALUE and
max == Double.MAX_VALUE
or a random integer with min == -10 and max = Integer.MAX_VALUE - 3
What is the expected output? What do you see instead?
One expects a number in the specified range, but
the range calculation overflows (since the maximal values are used).
What version of the product are you using? On what operating system?
I am using the version currently in the source code archive.
Please provide any additional information below.
A possible solution for doubles is provided below, which you can use under the
LGPL license of jlibs, when credentials are included.
/** @author Pierre van de Laar - TNO-ESI
*/
public static double random(double min, double max){
final double factor = 4;
if (min < Double.MAX_VALUE/-factor || max > Double.MAX_VALUE/factor)
{
//Prevent overflow with large ranges
final double mindivfactor = min/factor;
final double retval = factor * ( mindivfactor + Math.random()*((max/factor)-mindivfactor) );
return retval;
}
else
{
final double retval = min+Math.random()*(max-min);
return retval;
}
}
Original issue reported on code.google.com by Pierre.v...@gmail.com on 3 Dec 2013 at 1:44
Original issue reported on code.google.com by
Pierre.v...@gmail.com
on 3 Dec 2013 at 1:44