Javaのjava.util.Randomクラスとは何ですか?
java.util.Randomクラスは、擬似乱数を生成するために使用されます。このクラスによって実装されたメソッドは、int、double、float などのさまざまなランダム データ型を生成するために使用されます。したがって、乱数には 2 つの主要なタイプ、つまり統計的乱数と擬似乱数があります。統計的乱数 (数学における単純な乱数など) は、認識可能なパターンを持たない値のセットです。たとえば、サイコロを 10 回振ると、毎回、認識可能なパターンを持たない乱数が生成されます。擬似乱数とは何ですか?
これは統計的にランダムですが、開始点がわかっている一連の値です。Java では、それぞれの擬似乱数がアルゴリズムを通じて生成されます。したがって、通常、 java.util.Random が乱数を生成するたびにサイクルが繰り返されます。Java の乱数ジェネレーターは統計的に乱数を生成しますが、開始点は既知であり、アルゴリズムによって生成されます。これにより、それらの値が擬似ランダムになります。java.util.Random クラスは暗号的に安全ではありませんか?
乱数を生成するアルゴリズムが実装されているため、暗号的に安全ではありません。その結果、アルゴリズムの仕組みを知っている人であれば、機密データにアクセスするのにそれほど時間はかかりません。したがって、一部のセキュリティ アプリケーションを使用している場合、機密データを保護する必要がある場合、またはランダムなパスワードを生成する必要がある場合は、このクラスの使用を避けた方がよいでしょう。これは、ルードでのサイコロの目の乱数の生成、ギャンブル、試合でのトスの実行、または望ましい結果が予測できないその他の分野など、多くの場合に役立ちます。メソッド宣言
このクラスのメソッドを使用するには、まずパッケージから次のようにインポートする必要があります。
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出目: 4 ダイスロール: 6 ダイスロール: 1 ダイスロール: 1 ダイスロール: 3 ----------ランダム長値--------- ランダム長値: -6029959293504570824 ---- -------ランダム バイト----------- これらはランダム バイト = [ -37 90 -98 -70 23 -111 19 108 ]
メソッド
次に、 randomNumbers がクラスのオブジェクトまたはインスタンスであることに留意しながら、このクラスによって提供されるいくつかのメソッドについて説明します。-
doubles() :
このメソッドは、擬似ランダムに生成された double 値の無限シリーズを返します。では、このメソッドの使用方法を見てみましょう。
randomNumbers.doubles();
-
ints() :
このメソッドは、擬似ランダムに生成された整数値の無限シリーズを返します。次のスクリプトを使用して、このメソッドを呼び出すことができます。
randomNumbers.ints();
-
ロングス() :
このメソッドは、擬似ランダムに生成された無限の一連の Long 値を返します。このメソッドを呼び出すには次のスクリプトが使用されます。
randomNumbers.longs();
-
nextBoolean() :
このメソッドは、乱数生成シーケンスから次の均一に分散された擬似乱数のブール値を返します。一様分布は長方形の形状をしています。これは、分布内のすべての値が等しい確率を持つことを意味します。この方法の使用方法は次のとおりです。
randomNumbers.nextBoolean();
-
nextInt(int n) :
このメソッドは、0 を含み、指定された値を含まない範囲の乱数生成シーケンスから、次の一様に分散された擬似乱数整数値を返します。このメソッドの使用方法を簡単に説明します。
randomNumbers.nextInt(10);
GO TO FULL VERSION