我想在Java中生成1到10之间的数字。

以下是我的尝试:

Random rn = new Random();
int answer = rn.nextInt(10) + 1;

是否有一种方法可以告诉在调用nextInt方法时在括号()中放入什么以及添加什么?


这样做的标准方法如下:

提供:

最小值 max最大值

并返回一个介于最小值和最大值之间的整数。

Random rand = new Random();

// nextInt as provided by Random is exclusive of the top value so you need to add 1 

int randomNum = rand.nextInt((max - min) + 1) + min;

请参阅相关的JavaDoc。

正如Aurund所解释的,在短时间内创建的随机对象往往会产生相似的输出,因此将创建的随机对象保留为一个字段,而不是保存在一个方法中是一个好主意。


正如文档所述,此方法调用返回“一个伪随机、均匀分布的int值,介于0(包含)和指定值(不包含)之间”。这意味着在您的情况下,您将获得从0到9的数字。所以只要把1加到这个数上你就做对了。

一般来说,如果你需要生成从最小到最大的数字(包括两者),你写

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

这将用于生成数字1 - 10。确保在代码顶部导入Random。

import java.util.Random;

如果你想测试它,试试这样的方法。

Random rn = new Random();

for(int i =0; i < 100; i++)
{
    int answer = rn.nextInt(10) + 1;
    System.out.println(answer);
}

此外,如果你改变括号中的数字,它将创建一个从0到该数字-1的随机数(当然,除非你像你一样添加一个,那么它将从1到你输入的数字)。