Administrator
Administrator
发布于 2026-02-07 / 3 阅读
0
0

Random随机数

在 Java 中,通常使用 java.util.Random 类来生成伪随机数。这是 Java 标准库中处理随机数最常用的方式。

下面我为你详细介绍如何使用 Random 类来获取随机数。

1. 基本步骤

使用 Random 类通常分为两步:导入包、创建对象、调用方法。

import java.util.Random; // 1. 导入包

public class RandomDemo {

public static void main(String[] args) {

Random random = new Random(); // 2. 创建 Random 对象

// 3. 调用方法生成随机数

int num = random.nextInt();

System.out.println(num);

}

}

2. 常用方法速查表

Random 类提供了多种方法来生成不同类型的随机数:

方法名 返回类型 说明

nextInt() int 返回一个任意的随机整数(范围涵盖 int 所有值)

nextInt(n) int 返回一个 [0, n) 之间的随机整数(包含 0,不包含 n)

nextDouble() double 返回一个 [0.0, 1.0) 之间的随机浮点数

nextFloat() float 返回一个 [0.0, 1.0) 之间的随机单精度浮点数

nextBoolean() boolean 返回一个随机的布尔值 (true 或 false)

nextLong() long 返回一个随机的长整型数字

3. 核心使用场景

场景一:生成指定范围内的整数

这是最常见的需求,比如生成 1 到 100 之间的随机数。

* 公式: int randomNum = min + random.nextInt(max - min + 1);

* 原理: 先用 nextInt(范围) 生成从 0 开始的数,然后加上最小值进行“平移”。

Random random = new Random();

// 生成 [1, 100] 之间的随机整数(包含1和100)

int num1 = 1 + random.nextInt(100);

// 解析:nextInt(100) 生成 0-99,加上1变成 1-100

// 生成 [5, 15) 之间的随机整数(包含5,不包含15)

int num2 = 5 + random.nextInt(10);

System.out.println("1-100之间的随机数: " + num1);

场景二:生成指定范围内的小数

利用 nextDouble() 生成 [0.0, 1.0) 的特性,通过缩放和平移来获取范围。

* 公式: double randomNum = min + (max - min) * random.nextDouble();

Random random = new Random();

// 生成 [1.0, 5.0) 之间的随机小数

double decimal = 1.0 + (5.0 - 1.0) * random.nextDouble();

System.out.println("随机小数: " + decimal);

4. 关于“种子”的特殊用法

Random 类的构造函数可以接收一个 seed(种子)参数。种子决定了随机数序列的起始点。

* 无参构造 (new Random()): 种子基于当前系统时间(纳秒级),每次运行程序生成的序列都不同(看起来是“真随机”)。

* 有参构造 (new Random(long seed)): 如果种子相同,生成的随机数序列完全相同。这在需要复现结果的场景(如游戏存档、调试、算法重现)非常有用。

// 每次运行结果都不同

Random random1 = new Random();

// 每次运行结果都相同(因为种子固定为 12345)

Random random2 = new Random(12345);

5. 另一种简单方式:Math.random()

如果你只需要简单的随机小数,不需要复杂的类型控制,可以直接使用静态方法 Math.random()。

// 直接返回 [0.0, 1.0) 的 double 值

double d = Math.random();

// 生成 0-99 的整数

int i = (int)(Math.random() * 100);

总结建议:

* 如果你需要生成多种类型(int, double, boolean, byte数组)或者需要控制随机数范围,使用 java.util.Random。

* 如果你只是简单地需要一个 0 到 1 之间的小数,使用 Math.random() 更快捷。


评论