什麼是 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