什么是 Java 中的 java.util.Random 类?
java.util.Random类用于生成伪随机数。该类实现的方法用于生成int、double、float等不同的随机数据类型。所以有两种主要类型的随机数,统计随机数和伪随机数。统计随机数(如数学中的简单随机数)是一组没有可识别模式的值。例如,掷骰子 10 次,每次都会生成一个没有任何可识别模式的随机数。什么是伪随机数?
它是一组在统计上随机但具有已知起点的值。在 Java 中,每个伪随机数都是通过算法产生的。因此,通常每次java.util.Random生成随机数时都会重复一个循环。Java 中的随机数生成器将生成统计随机数,但起点已知,由算法生成。这使得这些值是伪随机的。java.util.Random 类密码不安全吗?
它在密码学上是不安全的,因为它实现了用于生成随机数的算法。因此,知道该算法如何工作的人不会花太多时间访问您的敏感数据。因此,如果您正在使用一些安全应用程序,需要保护一些敏感数据,或者需要生成随机密码,那么最好避免使用此类。它在许多情况下很有用,例如在 ludo、赌博、为比赛掷骰子或其他无法预测您想要的结果的领域为您的掷骰生成一个随机数。方法声明
要使用此类的方法,您需要先将其从包中导入为
import java.util.Random;
导入之后,你需要创建一个这个类的对象,比如
Random randomNumbers = new Random();
更进一步,让我们看一下使用java.util.Random类的不同示例。
例子
import java.util.Random;
public class RandomClassExample1 {
public static void main(String[] args) {
// create random object
Random randomNumbers = new Random();
System.out.println("----------Random Boolean---------" );
/*
* Returns the next pseudo random boolean value which
* may be used in a toss for a match
*/
boolean value = randomNumbers.nextBoolean();
System.out.println("The random boolean value is: " + value);
/*
* Returns the next pseudo random integer value between 0 and 5
* because if we use '6' then, it will give random numbers from 0 to 6
* hence incrementing it by 1 you can use it as a result of a dice roll
*/
System.out.println("\n----------Random Integer---------" );
System.out.println("Die Roll: " + (randomNumbers.nextInt(6)+1) );
System.out.println("Die Roll: " + (randomNumbers.nextInt(6)+1) );
System.out.println("Die Roll: " + (randomNumbers.nextInt(6)+1) );
System.out.println("Die Roll: " + (randomNumbers.nextInt(6)+1) );
System.out.println("Die Roll: " + (randomNumbers.nextInt(6)+1) );
// return the next pseudo random long value
Long val = randomNumbers.nextLong();
System.out.println("\n----------Random Long---------" );
System.out.println("Random Long value: " + val);
/*
* Generates random bytes and puts them in an array, which you can for some
* desired unpredictable result that is summing all the values in the array
*/
System.out.println("\n----------Random Bytes---------" );
byte[] bytes = new byte[8];
randomNumbers.nextBytes(bytes);
System.out.print("These are the random bytes = [ ");
for (int i = 0; i < bytes.length; i++) {
System.out.printf("%d ", bytes[i]);
}
System.out.println("]");
}
}
输出
----------Random Boolean-------- 随机布尔值为:true ----------Random Integer--------- Die Roll: 4 Die Roll: 6 Die Roll: 1 Die Roll: 1 Die Roll: 3 ----------Random Long-------- Random Long 值:-6029959293504570824 ---- ------随机字节-------- 这些是随机字节= [ -37 90 -98 -70 23 -111 19 108 ]
方法
现在我们将讨论此类提供的一些方法,请记住 randomNumbers是我们类的对象或实例。-
双打():
此方法返回无限系列的伪随机生成的双精度值。现在让我们看看如何使用这个方法。
randomNumbers.doubles();
-
整数():
此方法返回无限系列的伪随机生成的整数值。您可以使用以下脚本来调用此方法。
randomNumbers.ints();
-
多头():
此方法返回无限系列的伪随机生成的 long 值。以下脚本用于调用此方法。
randomNumbers.longs();
-
下一个布尔值():
此方法从随机数生成器序列返回下一个均匀分布的伪随机布尔值。均匀分布是矩形的,这意味着分布中的每个值都有相等的概率。下面介绍如何使用此方法。
randomNumbers.nextBoolean();
-
下一个整数(整数 n):
此方法从随机数生成器序列返回下一个均匀分布的伪随机整数值,介于 0 和提供的值之间。快速了解如何使用此方法。
randomNumbers.nextInt(10);
GO TO FULL VERSION