JAvaベース-Randomの乱数の使用

6148 ワード

Javaで乱数を生成する方法
多くの場合、ランダム数が必要です.特にテストをするときです.Javaで乱数を生成するにはいくつかの方法があります
Java.util.UUID-一意の文字列を生成
UUIDクラスで一意の文字列を生成することができ、グローバルで一意であり、すべてのコンピュータで生成される文字列は異なる.使用方法は次のとおりです.
String uuid  =  UUID.randomUUID().toString(); 

Math.random()
Math.random()法により[0,1]区間におけるdoubleタイプの数字を生成することができ、0でも1未満でもよい.その他の一般的な使用方法は以下の通りである.
  double   :Math.random()
  [0,100)(int)(Math.random()*100)

Math.random()のソースコードに入ると、その具体的な使用は、呼び出されたRandomのnextDouble()メソッドです.
public static double random() {
        return RandomNumberGeneratorHolder.randomNumberGenerator.nextDouble();
}
    
private static final class RandomNumberGeneratorHolder {
   static final Random randomNumberGenerator = new Random();
}

Randomクラス
Randomクラスはランダムな数を生成し、その主な方法は以下の通りである.
方法
意味
public Random()
構築方法
public Random(long var1)
乱数のシードを設定する方法
public synchronized void setSeed(long var1)
乱数のシードを設定
public void nextBytes(byte[] var1)
ランダムなバイト数を生成し、パラメータvar 1が受信する.
public int nextInt()
整数を取得します.
public int nextInt(int var1)
0-var 1範囲のランダム数を取得
public long nextLong()
Long型の乱数を取得
public boolean nextBoolean()
booleanタイプの乱数を取得
public float nextFloat()
floatタイプの乱数を返します
public double nextDouble()
Doubleタイプの乱数を取得し、[0,1]
public synchronized double nextGaussian()
ガウス正規分布に乗じたdouble値を返します.
以下の例はRandomを用いて5個の[000]内の乱数を生成する.
Random random = new Random();

//  5  0 100     。
System.out.println("  5  0 100     。 nextInt(100)");
for (int n = 0; n < 5; n++) {
    System.out.print(random.nextInt(100)+", ");
}

Randomの使用上の注意事項
ランダム数を生成するには2つの方法があり、1つはシードを持たないことであり、1つはシードを持つ次のようなコードであり、2つのランダム数を定義し、同じシードを設定し、100以内のランダム整数を返し、2つのランダム数の順序は同じである.
Random random = new Random(100);
Random random1 = new Random(100);

//    5 int    next()
System.out.println("    5 int    next()");
for (int n = 0; n < 5; n++) {
    System.out.println(random.nextInt(100)+" "+random1.nextInt(100));
}

       :
15,15
50,50
74,74
88,88
91,91

Randomの乱数は実際には擬似乱数であり,シードが決定すれば生成される乱数の順序が一致するので,例の2つのRandomインスタンスが順序が一致する乱数を生成することを避ける.一般的には2つの方法がある.
  • Randomインスタンスを生成するときはシードを指定しません.
  • 単一例のRandomクラスを生成し、乱数を生成します.