介绍
Java 在其 Math
和 Random
类中提供了多种内置方法来生成随机数。然而,生成指定范围内的随机数可能具有一定的挑战性。在本实验中,你将学习生成范围内随机数的不同方法,包括:
Java 在其 Math
和 Random
类中提供了多种内置方法来生成随机数。然而,生成指定范围内的随机数可能具有一定的挑战性。在本实验中,你将学习生成范围内随机数的不同方法,包括:
我们可以使用 Math.random()
方法来生成一个介于 0 和 1 之间的浮点值,这适用于生成随机数。然而,生成特定范围内的浮点值仍然具有挑战性。
在这个方法中,我们将利用 Math.random()
方法的公式生成一个介于 min
和 max
之间的随机数(包括 min
,但不包括 max
)。
以下是代码示例:
public static int randomNumberGenerator(int min, int max) {
double r = Math.random();
int randomNum = (int) (r * (max - min)) + min;
return randomNum;
}
要使用此方法,调用 randomNumberGenerator()
方法并传入最小值和最大值的整数参数;该方法将返回一个介于指定范围内的随机整数。
以下是使用 randomNumberGenerator()
生成两个随机数的代码;第一个随机数应在 5 到 105 的范围内,第二个随机数应在 2199 到 2200 的范围内。
int r1 = randomNumberGenerator(5, 105);
int r2 = randomNumberGenerator(2199, 2200);
要执行此方法,请在终端中运行以下命令:
$ cd project
$ touch RandomNumbers.java
// 粘贴代码
$ javac RandomNumbers.java
$ java RandomNumbers
另一种生成指定范围内随机数的方法是使用 Random 类中的 nextInt()
方法。
nextInt()
方法生成一个范围在 [0, n) 内的整数值。
public static int randomNumberGenerator(int min, int max) {
Random r = new Random();
int randomNum = r.nextInt(max - min) + min;
return randomNum;
}
该方法接收 min
和 max
参数,并返回一个指定范围内的随机整数。在此方法中,nextInt()
生成一个介于 0 到 (max-min)
之间的随机数,然后我们加上 min
值以得到最终的随机数。
以下是使用 randomNumberGenerator()
生成两个随机数的代码;第一个随机数应在 500 到 2000 的范围内,第二个随机数应在 500 到 501 的范围内。
int randomNum1 = randomNumberGenerator(500, 2000);
int randomNum2 = randomNumberGenerator(500, 501);
要执行此方法,请在终端中运行以下命令:
$ cd project
$ touch RandomNumbers.java
// 粘贴代码
$ javac RandomNumbers.java
$ java RandomNumbers
ints()
方法我们还可以使用 Random 类的 ints()
方法来生成一个指定范围内的随机整数流。
以下是生成流的代码:
Random r = new Random();
IntStream stream = r.ints(5, 100, 120);
在这里,ints()
方法接收三个参数:第一个是 count
参数,用于定义我们想要生成的整数数量;第二个和第三个是 bound
参数,用于定义范围。例如,在我们的代码中,bound
参数的范围是从 100 到 120。其中,最小值(100)是包含的,而最大值(120)是排除的。
创建此流后,我们可以使用 forEach()
来消费它,或者将其收集到集合(如 List 或数组)中。
以下是使用 ints()
方法生成五个介于 150 到 2000 之间的随机整数的代码:
int min = 150; // 定义最小值范围
int max = 2000; // 定义最大值范围
Random r = new Random();
IntStream stream = r.ints(5, min, max); // 生成随机流
int randomNum = stream.findFirst().getAsInt(); // 从流中获取第一个值
System.out.print("The random number is: " + randomNum); // 打印随机数
要执行此方法,请在终端中运行以下命令:
$ cd project
$ touch RandomNumbers.java
// 粘贴代码
$ javac RandomNumbers.java
$ java RandomNumbers
在 Java 中生成特定范围内的随机数对于许多应用程序至关重要。在本实验中,你学习了多种生成范围内随机数的方法,例如使用 Math.random()
、Random.nextInt()
和 Random.ints()
。每种方法都有其优缺点,你应该选择最适合你需求的方法。