关于题目: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才对!