Java 学习35:Random 类
一、什么是 Random 类
Random 类是 Java 中用于生成伪随机数的类。它位于 java.util 包中,提供了丰富的随机数生成方法,可以产生整数、浮点数和其他类型的随机数。不同于真正的随机数,Random 生成的数是伪随机的,因为它们是通过特定算法计算的。
二、Random 类的构造方法
Random 类有如下两个构造方法:
Random():默认使用前系统时间的毫秒数作为种子值,创建一个随机数生成器。
Random(long seed):使用参数 seed 作为种子值,创建一个随机数生成器。
创建 Random 对象时,可以指定一个种子值(seed),这个种子值会影响随机数生成序列的起始点。如果不指定种子值,Java 会使用当前时间的毫秒数作为默认种子。
三、Random 类的方法
Random 类提供了丰富的方法,用于生成各种类型的随机数。以下是一些常用方法:
| 方法 | 说明 |
|---|---|
| int nextlnt() | 生成一个随机的整数,数值介于 int 的区间,也就是 -2^31~2^31-1 |
| int nextlnt(int n) | 生成一个随机的整数,数值介于 [0,n),包含 0 而不包含 n |
| long nextLong() | 生成一个随机的长整数 |
| float nextFloat() | 生成一个随机的浮点数,数值介于 [0,1.0),含 0 而不包含 1.0 |
| double nextDouble() | 生成一个随机的双精度浮点数,数值介于 [0,1.0),含 0 而不包含 1.0 |
| boolean nextBoolean() | 生成一个随机的布尔值 |
四、Random 类的使用
例1:用 Random 类生成随机数。
import java.util.Random;public class RandomExample {public static void main(String[] args) {// 创建一个 Random 对象Random random = new Random();// 生成一个随机整数int randomInt = random.nextInt();System.out.println("随机整数: " + randomInt);// 生成一个 0 到 9 之间的随机整数int randomIntInRange = random.nextInt(10);System.out.println("0 到 9 之间的随机整数: " + randomIntInRange);// 生成一个随机双精度浮点数double randomDouble = random.nextDouble();System.out.println("随机双精度浮点数: " + randomDouble);}
}例2:用 Random 类生成一个在 [min, max] 范围内的随机整数。
import java.util.Random;public class RandomExample {public static void main(String[] args) {// 创建一个 Random 对象Random random = new Random();// 指定随机数区间int min = 10;int max = 20;// 生成一个 10 ~ 20 之间的随机整数int randomNumber = random.nextInt(max - min + 1) + min;System.out.println("10 ~ 20 之间的随机整数: " + randomNumber);}
}五、Random类的随机原理
Random 类的随机原理基于伪随机数生成器算法。
伪随机数生成器算法的核心思想是从一个初始种子值(seed)开始,然后通过一系列数学运算,如位运算、模运算等,生成下一个随机数。这个过程是可重复的,因此相同的种子将产生相同的随机数序列。
这意味着,如果您希望在不同的时间点或不同的应用中获得相同的随机数序列,只需使用相同的种子。因此,种子的选择非常关键,特别是在需要可重复性的情况下,如模拟和测试。
如果您不提供种子,Random 类将使用当前时间作为默认种子。这意味着每次运行程序时,都会产生不同的随机数序列。这通常足够满足一般的需求。但在某些情况下,您可能需要指定自己的种子以获得可重复的随机性。
