java - Android 随机数问题

标签 java android random

我正在生成随机数,但遇到了均等分配问题。该范围中的第一个和最后一个数字始终具有被选择的一半变化,因为它们不具有在两侧舍入的可能性。

例如,如果用户选择最小值为 1,最大值为 10,则与其他选项相比,1 和 10 被选中的机会会降低。

这是我当前的代码:

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

我知道我可以通过使用 nextInt() 来解决这个问题,但问题是我想将其保留为 double ,因为用户选择小数位数。

感谢帮助。

最佳答案

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) 作为整数随机数。

关于java - Android 随机数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45496721/

相关文章:

java - Java中如何将字节数据转换为可读文本

java - 文本出现在进度条之后 - Android

android - 将图像加载异步任务转换为 rxjava,为什么它滞后于 ui?

android - 显示 Internet 设置的对话框窗口

python - n 个数字的最小公倍数,使用递归

algorithm - 生成随机非奇异整数矩阵

java - 如何设置始终显示的警报?

java - 从另一个 jframe 添加节点到 jtree

java - 核对工具[比较两个大数据记录集]

javascript - Math.random() 什么时候开始重复?