Android随机数问题

时间:2017-08-04 01:00:05

标签: java android random

我正在生成随机数,我有一个平等分配问题。该范围内的第一个和最后一个数字总是有一半的选择变化,因为它们不具有被双方四舍五入的可能性。

例如,如果用户选择最小值为1且最大值为10,则1和10将比其他人减少被挑选的机会。

这是我目前的代码:

double num = random.nextDouble() * (max - min) + min;
String finalNum = String.format("%." + precision + "f", num);

我知道我可以通过使用nextInt()来解决这个问题,但问题是我希望将它保持为double,因为用户会选择会有多少小数位。

非常感谢帮助。

1 个答案:

答案 0 :(得分:1)

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(double)来显示精度 并使用intRand(int)作为整数随机。