首页 > 编程笔记 > Java笔记 阅读:23

Java随机数(Random类)详解(附带实例)

Random 类位于 java.util 包中,该类用于生成一个伪随机数,也就是按照一定规则生成的随机数。

在进行随机数生成时,随机算法的起源数字被称之为种子数(seed),在种子数的基础上按照相应规则进行变换,从而产生需要的随机数字。相同种子数的 Random对象,相同次数生成的随机数字是完全相同的。

该类有两个构造方法:一个构造方法使用默认的种子(以当前时间作为种子),另一个构造方法需要我们显式传入一个 long 型整数作为种子:
public Random()       // 以当前时间作为种子
public Random(long seed)  // 自定义随机数生成器种子
与 Math 类中的 random() 方法相比,Random 类提供了更多的方式来生成各种伪随机数,既可以生成浮点类型的伪随机数,也可以生成整数类型的伪随机数,并且还可以指定生成随机数的范围。

Random 类中常用的方法如下表所示:

表:Random 类的常用方法
方法 方法描述
boolean nextBoolean() 返回一个随机的布尔值
double nextDouble() 返回一个 0~1.0 的随机双精度型值,包括 0,不包括 1.0
int nextInt() 返回一个随机整数
int nextInt(int n) 返回一个 0~n 的随机整数,包括 0,不包括 n
void setSeed(long seed) 设置 Random 对象中的种子数
long nextLong() 返回一个随机长整型值
float nextFloat() 返回一个随机浮点型值

接下来,通过案例来演示 Random 类常用方法的使用:
import java.util.Random;

public class Demo {
    public static void main(String[] args) {
        Random r1 = new Random();    // 生成一个 Random 对象
        double num1 = r1.nextDouble();    // 生成一个 [0,1.0) 区间的小数
        System.out.println("[0,1.0) 区间小数: " + num1);
        double num2 = r1.nextDouble() * 2;    // 生成一个 [0,2.0) 区间的小数
        System.out.println("[0,2.0) 区间的小数: " + num2);
        int num3 = r1.nextInt();    // 生成一个任意整数
        System.out.println("随机整数: " + num3);
        int num4 = r1.nextInt(5);    // 生成一个 [0,5) 区间的整数
        System.out.println("[0,5) 区间的整数: " + num4);
        int num5 = r1.nextInt(18) - 3;    // 生成一个 [-3,15] 区间的整数
        System.out.println("[-3,15) 区间的整数: " + num5);
        // 相同种子数的 Random 对象,相同次数生成的随机数字是相同的
        Random r2 = new Random(20);
        Random r3 = new Random(20);
        for (int i = 0; i < 5; i++) {
            System.out.println("r2生成整数: " + (r2.nextInt(18) - 3));
            System.out.println("r3生成整数: " + (r3.nextInt(18) - 3));
        }
    }
}
程序的运行结果如下:

[0,1.0)区间小数:0.8630062058747404
[0,2.0)区间的小数:0.7852189438727106
随机整数:1533148188
[0,5)区间的整数:2
[-3,15)区间的整数:0
r2生成整数:14
r3生成整数:14
r2生成整数:13
r3生成整数:13
r2生成整数:6
r3生成整数:6
r2生成整数:12
r3生成整数:12
r2生成整数:2
r3生成整数:2

相关文章