Random类
在JDK的java.util包中,有一个Random类,它可以在指定的取值范围内随机产生数字。在Random类中提供了两个构造方法,如表1所示。
表1 Random的构造方法
方法声明 | 功能描述 |
---|---|
Random() | 构造方法,用于创建一个随机数生成器,每次实例化Random对象会生成不同的随机数 |
Random(long seed) | 构造方法,使用一个long型的seed(种子)创建伪随机数生成器,当seed相同时,每次实例化Random对象会生成相同的随机数 |
表1中列举了Random类的两个构造方法,其中第一个构造方法是无参的,通过它创建的Random实例对象每次使用的种子是随机的,因此每个对象所产生的随机数不同。如果希望创建的多个Random实例对象产生相同序列的随机数,则可以在创建对象时调用第二个构造方法,传入相同的种子即可。
相对于Math的random()方法而言,Random类提供了更多的方法来生成各种伪随机数。它不仅可以生成整数类型的随机数,还可以生成浮点类型的随机数,Random类中的常用方法,如表2所示。
表2 Random类的常用方法
方法声明 | 功能描述 |
---|---|
boolean nextBoolean() | 随机生成boolean类型的随机数 |
double nextDouble() | 随机生成double类型的随机数 |
float nextFloat() | 随机生成float类型的随机数 |
int nextInt() | 随机生成int类型的随机数 |
int nextInt(int n) | 随机生成[0,n)之间int类型的随机数 |
long nextLong() | 随机生成long类型的随机数 |
表2中,列出了Random类常用的方法,其中,Random类的nextDouble()方法返回的是0.0和1.0之间double类型的值,nextFloat()方法返回的是0.0和1.0之间float类型的值,nextInt(int n)返回的是0(包括)和指定值n(不包括)之间的值。接下来通过一个案例来学习这些方法的使用,如文件1所示。
文件1 Example16.java
1 import java.util.Random;
2 public class Example16 {
3 public static void main(String[] args) {
4 Random r = new Random();
5 System.out.println("生成boolean类型的随机数:"
6 + r.nextBoolean());
7 System.out.println("生成double类型的随机数:"
8 + r.nextDouble());
9 System.out.println("生成float类型的随机数:"
10 + r.nextFloat());
11 System.out.println("生成int类型的随机数:"
12 + r.nextInt());
13 System.out.println("生成0到10之间int类型的随机数:"
14 + r.nextInt(10));
15 System.out.println("生成long类型的随机数:"
16 + r.nextLong());
17 }
18 }
运行结果如图1所示。
图1 运行结果
从图1可以看出,通过调用Random类不同的方法分别产生了不同类型的随机数。