【发布时间】:2016-08-25 19:26:53
【问题描述】:
我不知道为什么 Java 的设计者没有设计 java.util.Random 对象来返回这样的随机数:
rand.nextInt(minValue, maxValue);
我不明白如何将最小值和最大值传递给这个函数。我看过这个推荐:
random.nextInt(max + 1 - (min)) + min
但这意味着什么?这是否意味着:
random.nextInt(FULL_RANGE + 1) + START_OF_RANGE
例如,如果我想生成介于 -1 和 1 之间(含)的值,我是这样做的吗:
int oneOfThreeChoices = rand.nextInt(1 + 1 + 1) - 1;
【问题讨论】:
-
关于“这是什么意思”:
max - min + 1是范围的大小。例如,如果您想要[1, 4]范围内的值,那么您需要 4 个不同的值(1、2、3、4)——即4 - 1 + 1。现在,由于 nextInt 的 arg 是独占的,所以你想传入 4。这会得到 {0, 1, 2, 3} 中的值,所以无论你得到什么值,你只需将其上移 1(即,@ 987654328@) 获取 {1, 2, 3, 4} 中的值。 -
由模组链接的答案是一个复杂得多的问题。最上面的答案是无关紧要的。这有什么帮助?这对我没有帮助。
-
怎么不相关?据我所知,您的问题基本上是“如何在给定的最小/最大范围内生成随机整数?”如果这是您的问题,则链接的副本会回答它,我在这里的评论甚至通过示例对其进行了解释。如果这不是你的问题,那是什么?