学科分类
目录
Java基础

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类不同的方法分别产生了不同类型的随机数。

点击此处
隐藏目录