Java 安卓随机数问题

Java 安卓随机数问题,java,android,random,Java,Android,Random,我正在生成随机数,我有一个相等的分布问题。范围内的第一个和最后一个数字总是有一半的变化被选中,因为它们不可能在两边都四舍五入 例如,如果用户选择的最小值为1,最大值为10,则与其他值相比,1和10的被拾取几率会降低 这是我目前的代码: double num = random.nextDouble() * (max - min) + min; String finalNum = String.format("%." + precision + "f", num); 我知道我可以通过使用nextI

我正在生成随机数,我有一个相等的分布问题。范围内的第一个和最后一个数字总是有一半的变化被选中,因为它们不可能在两边都四舍五入

例如,如果用户选择的最小值为1,最大值为10,则与其他值相比,1和10的被拾取几率会降低

这是我目前的代码:

double num = random.nextDouble() * (max - min) + min;
String finalNum = String.format("%." + precision + "f", num);
我知道我可以通过使用nextInt()来解决这个问题,但问题是我想将其保留为双精度,因为用户选择小数位数

谢谢你的帮助

double min = 1.0;
double max = 10.0;
double rand = r.nextDouble();
//now we add 1 for the spread (we want the number to be from 0.5 to 10.5)
double range = max - min + 1;  
rand *=range;
//now we shift by an offset of min-0.5;
rand += (min -0.5);
//now we round the number
int intRand = Math.round(rand);
您可以使用rand(双精度)来显示精度
并将intRand(int)用于随机整数。

您现在对
num
的计算强制它为
int
。切换到
nextInt
不会改变精度。你希望的任何精度都已经被放弃了。我修正了代码。我打字打错了。这就是我的代码看起来的样子我编辑了你的代码以满足我的需要,它工作了。谢谢