很多时候,作为一个Java程序员,你可能需要在一个特定的范围内生成随机数。
Java提供了几个内置的库来执行这项任务。也有第三方库来生成随机数。
本文讨论了以下方法来生成1到100之间的随机数。
- Java实用程序库的随机类。
- Java数学类的random()方法。
- Apache Commons库的RandomUtils类
- 在用线程工作时生成随机数。
使用Java Util的随机类在Java中生成1和100之间的随机数
Java的Utility库的Random 类提供了不同的方法来生成随机数。
它提供了生成整数、浮点数、双数和字节随机序列的方法。
有不同的多态形式的方法,可以在给定的范围内以及整数数据类型的范围内生成整数。
然而,本文重点讨论生成1到100之间的数字。
你也可以使用构造函数或setSeed() 方法向随机类提供一个种子值。
有两种方法来执行生成1和100之间的随机整数的任务。让我们逐一看看它们。
nextint()方法
nextInt() 方法的定义如下。
public int nextInt(int bound)
该方法返回一个介于0和'边界'参数之间的伪随机数。注意,0是包容的,'bound'是排他的。
要生成一个介于1和100之间的数字,两者都包括在内,你可以按照下面的步骤进行。
- 创建一个随机类的实例。
- 通过调用
nextInt()方法生成一个随机数,并将上界(100)作为参数传递给该方法。 - 它将生成一个在0(包括)和100(不包括)之间的数字。
- 为了使其在1(包括)和100(包括)之间,在该方法返回的数字上加1。
让我们看看实现上述方法的代码。
package java2blog;
import java.util.Random;
public class RandomIntegerExample {
public static void main(String[] args)
{
Random randI = new Random();
int myRandInt = randI.nextInt(100);
myRandInt = myRandInt+1;
System.out.println("Random number between 1 and 100: "+myRandInt);
}
}
输出。
1到100之间的随机数:87
ints()方法
ints() 方法也被定义在随机类中。它有几种不同的多态形式。
你可以使用这个方法来生成一个范围内的随机数流。ints() 方法的定义如下所示。
public IntStream ints(int randomNumberOrigin,
int randomNumberBound)
你可以注意到,这个方法返回一个整数流,而不是一个单一的整数。你可以从流中检索整数。
让我们看看使用ints() 方法生成一个随机数的步骤。
- 创建一个随机类的实例。
- 通过传递1和101作为参数来调用
ints()方法。 - 这将在1(包括)和101(不包括)的范围内生成数字。这意味着你将得到1和100之间的数字。
- 通过调用
findAny()和getAsInt()方法从所有数字中提取任何随机数。
让我们看看示例代码。
package java2blog;
import java.util.Random;
public class RandomIntegerExample {
public static void main(String[] args)
{
Random randI = new Random();
int myRandInt = randI.ints(1, 101).findAny().getAsInt();
System.out.println("Random number between 1 and 100: "+myRandInt);
}
}
输出。
1和100之间的随机数:71
使用数学类在Java中生成1和100之间的随机数
Java提供的Math类可以进行各种数学运算。
该类也有一个名为random() 的方法,可以产生均匀分布的伪随机数。
random() 方法的定义如下。
public static double random()
random()方法产生一个介于0.0(包括)和1.0(不包括)之间的双数。
你可以按照下面给出的步骤,使用Math.random() 方法生成1到100之间的数字。
- 通过调用
Math.random()方法生成一个随机数。 - 将该数字乘以100。
- 在这个数字上加1。
- 如果你想要整数的结果,明确地将结果转为 "int"。
让我们看看这段代码。
package java2blog;
public class RandomIntegerExample {
public static void main(String[] args)
{
double num = Math.random();
int myRandInt = (int)(num*100+1);
System.out.println("Random number between 1 and 100: "+myRandInt);
}
}
输出。
1和100之间的随机数:6
使用Apache Commons库在Java中生成1和100之间的随机数
Apache Commons是一个流行的第三方库在Java开发的Apache。
该库定义了一个RandomUtils类,其中包含几个方法来产生不同数据类型的随机数。
RandomUtils 类包含两种多态形式的nextInt() 方法,你可以用它来生成随机整数。
其中一种形式可以生成指定范围内的数字。让我们看看nextInt() 方法的定义。
public static int nextInt(int startInclusive,
int endExclusive)
该方法在第一个参数(包括)和第二个参数(排除)之间生成一个伪随机数。
请注意,如果你提供的参数是负数,或者startInclusive 大于endExclusive ,那么这个方法就会抛出IllegalArgumentsException 。
要生成一个1到100之间的数字。
- 通过传递0和100作为参数调用
nextInt()方法。 - 在该方法返回的结果中加上1。
注意,你不需要类的实例,因为该方法是一个静态方法。
让我们看看这段代码。
package java2blog;
import org.apache.commons.lang3.RandomUtils;
public class RandomIntegerExample {
public static void main(String[] args)
{
int myRandInt = RandomUtils.nextInt(0, 100);
myRandInt = myRandInt+1;
System.out.println("Random number between 1 and 100: "+myRandInt);
}
}
输出。
1到100之间的随机数:95
注意,你也可以把1和101作为参数传给该方法。它将产生同样的结果。
在Java中使用ThreadLocalRandom库在并发环境下生成1和100之间的随机数
尽管我们可以使用Java Utility的Random类以及Math类来生成线程中的随机数,但它们会降低性能。
因此,建议使用ThreadLocalRandom来生成随机数,同时使用线程工作。
ThreadLocalRandom类是Java Utility的Random类的一个子类。你可以使用这个子类的nextInt() 方法来生成线程中的随机整数。
你可以向nextInt() 方法传递两个参数。数字是在第一个参数(包括)和第二个参数(不包括)之间生成的。
你可以按照给定的步骤来生成1到100之间的随机数。
- 使用类名调用ThreadLocalRandom类的静态
current()方法。它返回当前线程的ThreadLocalRandom。 - 用1和101作为参数调用
nextInt()方法。 - 它将生成一个在1(包括)和100(包括)之间的随机数。
让我们看看这段代码。
package java2blog;
import java.util.concurrent.ThreadLocalRandom;
public class RandomIntegerExample {
public static void main(String[] args)
{
int myRandInt = ThreadLocalRandom.current().nextInt(1, 101);
System.out.println("Random number between 1 and 100: "+myRandInt);
}
}
输出。
1到100之间的随机数:20
总结
本文讨论了生成1到100之间的随机数的四种不同方法。
你可以通过简单地改变文章中讨论的方法的参数来生成任何给定范围的数字的随机数。
你也可以用类似的方法生成其他数据类型的数字。
希望你喜欢阅读这篇文章。请继续关注更多的文章。学习愉快!