我想在Java

时间:2018-09-07 14:21:10

标签: java function random

为此,我找到了解决方案,但我不明白: 我已经使用了下面的函数来生成给定范围内的随机数,但是下面的函数是什么意思?

static int randomRangeInNumber(int min, int max) {
    Random r=new Random();
    return r.nextInt((max-min)+1)+min;
}

我没有得到的退货 请帮助我理解其含义 任何帮助将不胜感激

2 个答案:

答案 0 :(得分:0)

nextInt(int bound)的文档中说

  

从该随机数生成器的序列中返回一个伪随机数,其int值在0(含)和指定值(不含)之间均匀分布。

所以您的nextInt通话是

  1. 获取返回值,该值在[0..bound]范围内(边界为(max-min)+1),然后
  2. 使用+min将其缩放到[min..max]范围。
return r.nextInt((max-min)+1)+min;
       \__________1_________/\_2_/

答案 1 :(得分:0)

  

nextInt通常不包含最大值,因此加1使其成为最大值   包容性

因此,在您的情况下,我们说max是10,而min是5。

nextInt(n)将为您提供0到n-1之间的随机数。

因此,添加+1将使您包括n的值。

nextInt(max-min)因此会给您一个随机数(在这种情况下),介于0和5-1之间(并由于+1而包含了5)

然后再次添加min,表示它将为您提供上面的随机数,但是将其加上5,因此结果将是5到10之间的随机数。