md_files/自学/草稿.md

2.5 KiB
Raw Blame History

下面是 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_VALUEInteger.MAX_VALUE
nextInt(bound) 0至 bound不含 [0, bound)
nextLong() 任意 long 整个 long 范围
nextDouble() double 小数 [0.0, 1.0)
nextBoolean() 布尔值 truefalse
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