2.5 KiB
2.5 KiB
下面是 Java 中 java.util.Random
类的简要介绍及几种最常用的用法示例。
1. 基本概念
Random
是伪随机数生成器,内部用线性同余法(LCG)产生序列。- 如果不传 seed,默认以当前时间作为种子;传入相同 seed 会得到相同的“随机”序列,方便测试。
import java.util.Random;
Random rnd1 = new Random(); // 随机种子
Random rnd2 = new Random(12345L); // 固定种子 -> 每次结果相同
2. 常用方法
方法 | 功能 | 返回值范围 |
---|---|---|
nextInt() |
任意 int | Integer.MIN_VALUE … Integer.MAX_VALUE |
nextInt(bound) |
0(含)至 bound(不含) | [0, bound) |
nextLong() |
任意 long | 整个 long 范围 |
nextDouble() |
double 小数 | [0.0, 1.0) |
nextBoolean() |
布尔值 | true 或 false |
nextGaussian() |
高斯(正态)分布 | 均值 0、标准差 1 |
3. 示例代码
import java.util.Random;
import java.util.stream.IntStream;
public class RandomDemo {
public static void main(String[] args) {
Random rnd = new Random(); // 随机种子
Random seeded = new Random(2025L); // 固定种子
// 1) 随机整数
int a = rnd.nextInt(); // 任意 int
int b = rnd.nextInt(100); // [0,100)
System.out.println("a=" + a + ", b=" + b);
// 2) 随机浮点数与布尔
double d = rnd.nextDouble(); // [0.0,1.0)
boolean flag = rnd.nextBoolean();
System.out.println("d=" + d + ", flag=" + flag);
// 3) 高斯分布
double g = rnd.nextGaussian(); // 均值0,σ=1
System.out.println("gaussian=" + g);
// 4) 生成一组随机数流
IntStream stream = rnd.ints(5, 50, 60); // 5 个 [50,60) 的随机 ints
System.out.print("stream: ");
stream.forEach(n -> System.out.print(n + " "));
}
}
4. 小贴士
- 并发环境下可用
ThreadLocalRandom.current()
,避免多线程竞争。 - 若只需加密强度随机数,请使用
SecureRandom
。