logo

Javaで乱数を生成する

Java では、以下に示すように、いくつかの組み込みメソッドとクラスを使用して乱数を生成する 3 つの方法が提供されています。

    java.util.Randomクラス Math.randomメソッド : double型の乱数を生成できます。 ThreadLocalRandom クラス

1) java.util.Random

  • このクラスを使用して乱数を生成するには、まずこのクラスのインスタンスを作成し、次にそのインスタンスを使用して nextInt()、nextDouble()、nextLong() などのメソッドを呼び出す必要があります。
  • このクラスを使用して、整数、float、double、long、boolean 型の乱数を生成できます。
  • メソッドに引数を渡して、生成される数値の範囲に上限を設定できます。たとえば、nextInt(6) は 0 ~ 5 の範囲の数値を生成します。

ジャワ






// A Java program to demonstrate random number generation> // using java.util.Random;> import> java.util.Random;> > public> class> generateRandom{> > >public> static> void> main(String args[])> >{> >// create instance of Random class> >Random rand =>new> Random();> > >// Generate random integers in range 0 to 999> >int> rand_int1 = rand.nextInt(>1000>);> >int> rand_int2 = rand.nextInt(>1000>);> > >// Print random integers> >System.out.println(>'Random Integers: '>+rand_int1);> >System.out.println(>'Random Integers: '>+rand_int2);> > >// Generate Random doubles> >double> rand_dub1 = rand.nextDouble();> >double> rand_dub2 = rand.nextDouble();> > >// Print random doubles> >System.out.println(>'Random Doubles: '>+rand_dub1);> >System.out.println(>'Random Doubles: '>+rand_dub2);> >}> }>

>

>

出力

Random Integers: 618 Random Integers: 877 Random Doubles: 0.11981638980670772 Random Doubles: 0.7288425427367139>

2) Math.random()

Math クラスには、べき乗や対数の計算など、さまざまな数値演算を実行するためのさまざまなメソッドが含まれています。これらのメソッドの 1 つは、random() です。このメソッドは、0.0 以上 1.0 未満の正の符号が付いた double 値を返します。 。戻り値は擬似ランダムに選択されます。このメソッドは Double タイプの乱数のみを生成できます。以下のプログラムは、このメソッドの使用方法を説明しています。

ジャワ




// Java program to demonstrate working of> // Math.random() to generate random numbers> import> java.util.*;> > public> class> generateRandom> {> >public> static> void> main(String args[])> >{> >// Generating random doubles> >System.out.println(>'Random doubles: '> + Math.random());> >System.out.println(>'Random doubles: '> + Math.random());> >}> }>

>

>

出力

Random doubles: 0.40748894116045375 Random doubles: 0.006683607229094002>

3) java.util.concurrent.ThreadLocalRandom クラス

このクラスは、整数、倍精度、ブール値などの乱数を生成するために Java 1.7 で導入されました。以下のプログラムは、このクラスを使用して乱数を生成する方法を説明しています。

ジャワ




// Java program to demonstrate working of ThreadLocalRandom> // to generate random numbers.> import> java.util.concurrent.ThreadLocalRandom;> > public> class> generateRandom> {> >public> static> void> main(String args[])> >{> >// Generate random integers in range 0 to 999> >int> rand_int1 = ThreadLocalRandom.current().nextInt();> >int> rand_int2 = ThreadLocalRandom.current().nextInt();> > >// Print random integers> >System.out.println(>'Random Integers: '> + rand_int1);> >System.out.println(>'Random Integers: '> + rand_int2);> > >// Generate Random doubles> >double> rand_dub1 = ThreadLocalRandom.current().nextDouble();> >double> rand_dub2 = ThreadLocalRandom.current().nextDouble();> > >// Print random doubles> >System.out.println(>'Random Doubles: '> + rand_dub1);> >System.out.println(>'Random Doubles: '> + rand_dub2);> > >// Generate random booleans> >boolean> rand_bool1 = ThreadLocalRandom.current().nextBoolean();> >boolean> rand_bool2 = ThreadLocalRandom.current().nextBoolean();> > >// Print random Booleans> >System.out.println(>'Random Booleans: '> + rand_bool1);> >System.out.println(>'Random Booleans: '> + rand_bool2);> >}> }>

マムタ・クルカルニ 俳優

>

>

出力

Random Integers: -2106603442 Random Integers: 1894823880 Random Doubles: 0.6161052280172054 Random Doubles: 0.8418944588752132 Random Booleans: false Random Booleans: true>

特定の範囲の乱数を生成します。それを行うには 2 つの異なる方法があります:

  • ランダムクラスの使用
  • Math.random() メソッドの使用

1. ランダムクラスの使用

これは、特定の範囲の乱数を生成する式です。最小値と最大値は数値の下限と上限です。

ランダム ランド = new Random();
intrandomNum = rand.nextInt(max – min + 1) + min;

ジャワ




import> java.io.*;> import> java.util.*;> class> GFG {> >public> static> void> main (String[] args) {> >Random rand =>new> Random();> >int> max=>100>,min=>50>;> >System.out.println(>'Generated numbers are within '>+min+>' to '>+max);> >System.out.println(rand.nextInt(max - min +>1>) + min);> >System.out.println(rand.nextInt(max - min +>1>) + min);> >System.out.println(rand.nextInt(max - min +>1>) + min);> >}> }>

>

>

出力

Generated numbers are within 50 to 100 58 87 55>

時間計算量: O(1) の時間計算量があります。
補助スペース: O(1) には一定のスペースが必要です。

2. Math.random() メソッドの使用

特定の範囲の乱数を生成する式は次のとおりです。最小値と最大値は数値の下限と上限です。

int randomNum = min + (int)(Math.random() * ((max – min) + 1));

ジャワ




/*package whatever //do not write package name here */> import> java.io.*;> import> java.util.*;> class> GFG {> >public> static> void> main (String[] args) {> >int> max=>100>,min=>50>;> >System.out.println(>'Generated numbers are within '>+min+>' to '>+max);> >System.out.println(min + (>int>)(Math.random() * ((max - min) +>1>)));> >System.out.println(min + (>int>)(Math.random() * ((max - min) +>1>)));> >System.out.println(min + (>int>)(Math.random() * ((max - min) +>1>)));> >}> }>

>

>

出力

Java scan.nextstring
Generated numbers are within 50 to 100 53 99 77>

時間計算量: O(1) の時間計算量があります。
補助スペース: O(1) には一定のスペースが必要です。