如何指定java.util.Random的范围?

如何指定java.util.Random的范围?,java,android,random,Java,Android,Random,我不知道为什么Java的设计者没有设计Java.util.Random对象来返回这样的随机数: rand.nextInt(最小值、最大值) 我不明白如何将最小值和最大值传递给这个函数。我看到过这样的建议: random.nextInt(最大+1-(最小))+min 但这意味着什么?这是否意味着: random.nextInt(完整\u范围+1)+开始\u范围 例如,如果我想生成介于-1和1之间(包括-1和1)的值,我是这样做的: int-oneOfThreeChoices=rand.nextIn

我不知道为什么Java的设计者没有设计Java.util.Random对象来返回这样的随机数:

rand.nextInt(最小值、最大值)

我不明白如何将最小值和最大值传递给这个函数。我看到过这样的建议:

random.nextInt(最大+1-(最小))+min

但这意味着什么?这是否意味着:

random.nextInt(完整\u范围+1)+开始\u范围

例如,如果我想生成介于-1和1之间(包括-1和1)的值,我是这样做的:


int-oneOfThreeChoices=rand.nextInt(1+1+1)-1

API为您提供了足够的工具来完成此任务。如果希望在[a,b]范围内(包括两端)使用随机整数,请使用

int n = random.nextInt(b-a+1) + a
假设
random
是之前声明为
java.util.random

random类型的对象。nextInt(bound)
返回从0到
bound
的随机数(独占)。例如
random.nextInt(10)
返回0到9之间的随机数

所以,如果你想把数字从5返回到15(含),只要说


为什么java设计人员没有将更方便的API包含到JDK中?我认为,因为这里解释的方法非常简单和明显

关于“这意味着什么”:
max-min+1
是范围的大小。例如,如果您想要范围
[1,4]
中的值,那么您需要4个不同的值(1,2,3,4)--即
4-1+1
。现在,由于arg到nextInt是独占的,所以您希望传入4。这会得到{0,1,2,3}中的值,所以无论从中得到什么值,只需将其向上移动1(即,
min
)即可得到{1,2,3,4}中的值。最重要的答案是无关紧要的。这有什么帮助?这对我没有帮助,怎么会无关紧要呢?据我所知,你的问题基本上是“如何在给定的最小/最大范围内生成一个随机整数?”如果这是你的问题,链接的副本会回答它,我在这里的评论甚至会举例说明。如果这不是你的问题,那是什么?
random.nextInt(11) + 5