我想在java中的给定范围内生成随机数

问题描述 投票:0回答:2

为此,我得到了解决方案,但我无法理解:我使用了下面的函数来生成给定范围内的随机数,但下面的函数是什么意思?

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

我没有得到什么请帮助让我理解其含义任何帮助将不胜感激

java function random
2个回答
0
投票

nextInt通常不包含最高值,因此添加1以使其包含在内

那么,在你的情况下,我们会说max是10而min是5。

nextInt(n)会给你一个介于0和n - 1之间的随机数。

因此,添加+1将允许您包含n的值。

nextInt(max-min)因此给你一个随机数(在这种情况下)0和5 - 1(并包括5因为+1)

然后再次添加min意味着它会给你上面的随机数,但是加5,所以结果将是5到10之间的随机数。


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_/
© www.soinside.com 2019 - 2024. All rights reserved.