这是主意。你想在一个随机数 的范围 ,比方说
[-1.1,2.2],开始用一个简单的例子。自以来,该范围的长度为3.3
2.2 - (-1.1) =3.3。现在,大多数“随机”函数都返回范围为1的数字(
[0,1)长度为1),因此我们必须将随机数 缩放 到所需的范围。
Random random = new Random();double rand = random.nextDouble();double scaled = rand * 3.3;
现在我们的随机数具有我们想要的大小,但是我们必须在数字行中将其移动到我们想要的精确值之间。对于这一步,我们只需要将整个范围的下限添加到缩放后的随机数中就可以了!
double shifted = scaled + (-1.1);
现在,我们可以将这些部分放到一个函数中:
protected static Random random = new Random();public static double randomInRange(double min, double max) { double range = max - min; double scaled = random.nextDouble() * range; double shifted = scaled + min; return shifted; // == (rand.nextDouble() * (max-min)) + min;}当然,此功能需要对意外值进行一些错误检查,例如,
NaN但是此答案应能说明总体思路。



