生成一个1到10之间的随机数Java

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

这是我试过的:

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

有没有办法告诉当调用nextInt方法和添加什么时在括号()要放什么?

正如文档所说,这个方法调用返回“一个伪随机,均匀分布的int值在0(含)和指定的值(不含)之间”。 这意味着你会得到0到9的数字。 所以你已经做了一切正确的join一个号码。

一般来说,如果您需要从minmax (包括两者)生成数字,您可以编写

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

标准的做法如下:

 /** * Returns a psuedo-random number between min and max, inclusive. * The difference between min and max can be at most * <code>Integer.MAX_VALUE - 1</code>. * * @param min Minimim value * @param max Maximim value. Must be greater than min. * @return Integer between min and max, inclusive. * @see java.util.Random#nextInt(int) */ public static int randInt(int min, int max) { // Usually this can be a field rather than a method variable Random rand = new Random(); // nextInt is normally exclusive of the top value, // so add 1 to make it inclusive int randomNum = rand.nextInt((max - min) + 1) + min; return randomNum; } 

查看相关的JavaDoc 。

正如Aurund所解释的那样,在短时间内相互创build的Random对象将倾向于产生相似的输出,所以将创build的Random对象作为一个字段而不是像我所做的一样是一个好主意仅供解释)。

资料来源: https : //stackoverflow.com/a/363692/846892

这将生成一个数字1 – 10.确保您的代码的顶部导入随机。

 import java.util.Random; 

如果你想testing出来,尝试这样的事情。

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

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