在Java中,Random 类是一个用于生成伪随机数的工具类。它是Java标准库中的一部分,位于java.util包中。Random 类的主要功能是生成不同类型的随机数,包括整数、浮点数和布尔值。

使用:

/**
 * 随机类 Random 测试
 */
public class RandomDemo {

    public static void main(String[] args) {
        Random random = new Random();

        boolean booleanNum = random.nextBoolean(); // 随机获取 true 或 false
        print(booleanNum);

        double doubleNum = random.nextDouble(); // 随机获取0~1的Double类型
        print(doubleNum);

        int intNum = random.nextInt(); // 随机获取-2147483647~2147483648的int类型
        print(intNum);

        int intNum2 = random.nextInt(10); //获取0~10内的随机数,包括0,不包括10
        print(intNum2);
    }

    private static void print(Object o) {
        System.out.println(o);
    }
}

在使用 Random

1、初始值的选择:Random 类的生成器使用一个初始值来确定生成的随机数序列。如果不指定初始值,Random 类会使用系统时间作为默认初始值。但是,如果在很短的时间内创建多个 Random 对象,它们可能会以相同的初始值开始,从而生成相同的随机数序列。为了避免这种情况,可以使用不同的初始值或者在生成 Random

2、随机性和预测性:尽管 Random 类生成的数字看起来是随机的,但实际上是通过算法生成的伪随机数。这意味着它们在一定程度上是可预测的。如果对于安全性要求较高的场景(如密码学),应使用 java.security.SecureRandom

3、生成器的复用:为了避免重复创建 Random 对象,最好将一个 Random 对象重复使用,而不是在需要随机数时创建新的对象。这是因为 Random 对象的创建可能涉及到一些开销较大的操作,如初始化。因此,最好将 Random

4、多线程环境下的同步:Random 类的实例方法是线程安全的,这意味着可以在多线程环境中使用相同的 Random 对象生成随机数。然而,如果在多个线程中使用多个 Random