欢迎访问宙启技术站
智能推送

如何使用 Java 中的 Random 类来生成伪随机数?

发布时间:2023-06-02 07:13:09

Java 中的 Random 类是一个非常常用的类,用来生成伪随机数序列。它是一个伪随机数发生器,也就是说它只能生成看起来像是真随机数的序列,但实际上是按照某种算法生成的,完全不具有真正随机数的性质。

Random 类是 Java 标准类库中的一部分,因此您可以在任何 Java 程序中使用它。要使用 Random 类,您需要创建一个 Random 对象。此对象不能简单地实例化,而是需要在其上调用一个构造函数。现在让我们来看看如何使用 Java 中的 Random 类来生成伪随机数。

1.创建 Random 对象

要使用 Random,您需要使用它的构造函数创建一个 Random 对象。有两个构造函数可用于创建 Random 对象。如果不给定参数,则它将使用当前时间的毫秒值作为种子数来初始化 Random 对象。

Random random = new Random();

或者,您可以使用一个 long 型的种子数来初始化 Random 对象。在这种情况下,您可以使用任何 long 型的值来初始化 Random 对象。

long seed = 1234567;
Random random = new Random(seed);

2.生成伪随机数

调用 Random 对象的 nextInt() 方法、nextLong() 方法或 nextDouble() 方法,就可以生成伪随机整数、长整数或双精度浮点数,而 nextBoolean() 方法则生成随机的布尔值。

// 生成 0 到 99 之间的伪随机数
int randomInt = random.nextInt(100);

// 生成 -2^63 到 2^63-1 之间的伪随机数
long randomLong = random.nextLong();

// 生成介于 0.0 和 1.0 之间的伪随机数
double randomDouble = random.nextDouble();

// 生成随机的布尔值
boolean randomBoolean = random.nextBoolean();

3.设置生成范围

如果需要限制生成的伪随机数的范围,可以使用 nextInt() 方法的参数,指定最大值和最小值。在下面的示例中,它将生成介于 50 和 99 之间的伪随机整数。

int min = 50;
int max = 100;
int randomInt = random.nextInt(max - min) + min;

请注意,如果您只想从区间 [0, n) 中生成伪随机数,可以使用 nextInt(n) 方法,而不是 nextInt() 方法。

// 生成 0 到 9 之间的伪随机数
int randomInt = random.nextInt(10);

4.生成随机数序列

通常情况下,从 Random 对象中生成伪随机数时,每个值独立于前一个值。如果需要生成重复序列,则可以将随机数序列永久性地固定下来,使其能够重现。

为了做到这一点,可以先将生成的值放入一个数组中,然后将这个数组作为 seed 给 Random 对象。这将导致 Random 对象在接下来的调用中生成相同的伪随机数序列。

int[] values = {10, 20, 30, 40, 50};
Random random = new Random(Arrays.hashCode(values));

// 将生成固定的伪随机数序列
int randomInt = random.nextInt();
double randomDouble = random.nextDouble();

在执行上面的代码之后,每次调用 Random 对象的方法返回的随机数序列都将是固定的,重复生成相同的序列。

总结

Java 中的 Random 类是一个非常有用的工具,可以用来生成伪随机数。虽然生成的伪随机数看起来是随机的,但实际上它们是按照某种算法生成的。Random 类提供了许多不同的方法来生成伪随机数,包括整数、长整数、双精度浮点数和布尔值。如果需要从特定范围内生成伪随机数,可以使用参数设置最大值和最小值。要生成重复的随机数序列,请将生成的值放入一个数组中,并将其传递给 Random 对象的构造函数。