java产生1~100之间的随机数,很疑惑很疑惑,望解答

图片说明
关于题目:1~100随机数
是用int i = r.nextInt(100)+1;
还是用int i = r.nextInt(99)+1;
网上都用int i = r.nextInt(100)+1;
具体请看图片

遇到这种问题,你应该去看文档

声明

    以下是对java.util.Random.nextInt()方法的声明。
public int nextInt(int n)


    参数



            n--这是结合于该随机数返回。必须为正数。



    返回值

    在方法调用返回介于0(含)和n(不含)伪随机,均匀分布的int值。

你注意了,不含上限,所以r.nextInt(100)永远不会返回100,r.nextInt(99)永远不会返回99。如果你希望有100,就是r.nextInt(100)+1,如果你希望没有100就是
r.nextInt(99)+1

java.util.Random#nextInt(int)
你点进去源码看,我抽取了一段注释:

   /** 
          * Returns a pseudorandom, uniformly distributed {@code int} value
     * between 0 (inclusive) and the specified value (exclusive), drawn from
     * this random number generator's sequence. 
    */

返回伪随机数,均匀分布的int值介于0(含)和指定值(不包括)之间,从随机数生成器中提取。

即不包含你的传参,比如你传了100,出来的随机数是不包含100的。
如果你传101,才会随机出100。

随机数范围前开后闭。前边包含,后边不包含。从零开始,就包含零,到100结束,不包含100.你需要生成1-100,假设你用r.next(100)。就是0-99,所以如果生成0或者99,你是不是应该+1呢?所以应该是r.next(100)+1才对!