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

时间:2016-08-25 19:26:53

标签: java android random

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

rand.nextInt(minValue, maxValue);

我不明白如何将min和max值传递给此函数。我已经看到了这个推荐:

random.nextInt(max + 1 - (min)) + min

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

random.nextInt(FULL_RANGE + 1) + START_OF_RANGE

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

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

2 个答案:

答案 0 :(得分:3)

API为您提供了足够的工具来完成此任务。如果你想在范围[a,b]上包含两端的随机int,请使用

int n = random.nextInt(b-a+1) + a

假设random是先前声明为java.util.Random类型的对象。

答案 1 :(得分:1)

random.nextInt(bound)返回0到bound的随机数(不包括)。例如,random.nextInt(10)返回0到9之间的随机数。

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

random.nextInt(11) + 5

为什么java设计师没有为JDK提供更方便的API?我认为,因为这里解释的方式非常简单明了。