如何使用 Java 中的 Random 类来生成伪随机数?
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 对象的构造函数。
