クラスRandom

java.lang.Object
java.util.Random
すべての実装されたインタフェース:
Serializable, RandomGenerator
直系の既知のサブクラス:
SecureRandom, ThreadLocalRandom

public class Random extends Object implements RandomGenerator, Serializable
このクラスのインスタンスは、擬似乱数のストリームの生成に使用されます。その期間は248のみです。 クラスでは48ビットのシードを使い、このシードは線形合同法で変更されます。 (See Donald E. Knuth, 「The Art of Computer Programming, Volume 2, Third edition: 英数字アルゴリズム」, Section 3.2.1を参照してください。)

2つのRandomインスタンスが同じシードで生成されている場合、それぞれに対して同じシーケンスでメソッド呼出しを行うと、同じシーケンスで数値が生成され返されます。 この特性を保証するために、Randomクラスには固有のアルゴリズムが指定されています。 Javaコードの絶対的な移植性の保持のために、Javaの実装はここに示されているRandomクラスのアルゴリズムをすべて使用する必要があります。 ただし、Randomクラスのサブクラスは、すべてのメソッドの一般規約に準拠したものであればほかのアルゴリズムも使用できます。

Randomクラスによって実装されるアルゴリズムでは、各呼出しで擬似乱数的に生成された最大32ビットを提供できるprotectedユーティリティ・メソッドが使用されます。

多くのアプリケーションの場合、Math.random()メソッドを使うほうが簡単です。

java.util.Randomのインスタンスはスレッド・セーフです。 ただし、複数のスレッドで同じjava.util.Randomインスタンスを並行して使用すると、競合が発生してパフォーマンスが低下する可能性があります。 マルチ・スレッド設計では、代わりにThreadLocalRandomを使用することを検討してください。

java.util.Randomのインスタンスには安全な暗号化が施されていません。 セキュリティ保護を必要とするアプリケーションで使用するために安全な暗号化の施された擬似乱数ジェネレータを取得するには、代わりにSecureRandomを使用することを検討してください。

導入されたバージョン:
1.0
関連項目:
  • ネストされたクラスのサマリー

    インタフェースで宣言されたネストされたクラス/インタフェース RandomGenerator

    RandomGenerator.ArbitrarilyJumpableGenerator, RandomGenerator.JumpableGenerator, RandomGenerator.LeapableGenerator, RandomGenerator.SplittableGenerator, RandomGenerator.StreamableGenerator
    修飾子と型
    インタフェース
    説明
    static interface 
    このインタフェースは、擬似乱数シーケンスを生成し、任意の量で簡単にjumpを状態サイクルの遠いポイントに送ることができるオブジェクトに共通のプロトコルを提供するように設計されています。
    static interface 
    このインタフェースは、擬似乱数値を生成するオブジェクトに共通のプロトコルを提供するように設計されており、状態サイクル内の離れた場所に適度な量(たとえば264)で簡単に前方にジャンプできます。
    static interface 
    このインタフェースは、擬似乱数シーケンスを生成するオブジェクトに共通のプロトコルを提供するように設計されており、その状態サイクルの非常に遠いポイントに簡単に前方にジャンプできるだけでなく、飛躍(たとえば、2128)することもできます。
    static interface 
    このインタフェースは、擬似乱数値の順序を生成するオブジェクトに共通プロトコルを提供するように設計されており、それぞれ(元のものと新しいもの)という2つのオブジェクトに「分割」で、同じプロトコル(したがって、無期限に再帰的に分割できます)に従うことができます。
    static interface 
    RandomGenerator.StreamableGeneratorインタフェースは、RandomGeneratorインタフェースを補強して、RandomGeneratorオブジェクトのストリームを返すメソッドを提供します。
  • コンストラクタのサマリー

    コンストラクタ
    コンストラクタ
    説明
    新規乱数ジェネレータを作成します。
    Random(long seed)
    単一のlong型のシードを使って、新しい乱数ジェネレータを作成します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    0(含む)から1(含まない)までの擬似乱数 double値を含む、事実上無制限のストリームを返します。
    doubles(double randomNumberOrigin, double randomNumberBound)
    指定された起点(含む)と境界(含まない)に準拠した擬似乱数 double値を含む、事実上無制限のストリームを返します。
    doubles(long streamSize)
    0(含む)から1(含まない)までの擬似乱数double値を、指定されたstreamSize数だけ生成するストリームを返します。
    doubles(long streamSize, double randomNumberOrigin, double randomNumberBound)
    指定された起点(含む)と境界(含まない)に準拠した擬似乱数double値を、指定されたstreamSize数だけ生成するストリームを返します。
    static Random
    from(RandomGenerator generator)
    メソッド・コールをRandomGenerator引数に委任するRandomのインスタンスを返します。
    擬似乱数int値を含む、事実上無制限のストリームを返します。
    ints(int randomNumberOrigin, int randomNumberBound)
    指定された起点(含む)と境界(含まない)に準拠した擬似乱数 int値を含む、事実上無制限のストリームを返します。
    ints(long streamSize)
    擬似乱数int値を、指定されたstreamSize数だけ生成するストリームを返します。
    ints(long streamSize, int randomNumberOrigin, int randomNumberBound)
    指定された起点(含む)と境界(含まない)に準拠した擬似乱数int値を、指定されたstreamSize数だけ生成するストリームを返します。
    擬似乱数long値を含む、事実上無制限のストリームを返します。
    longs(long streamSize)
    擬似乱数long値を、指定されたstreamSize数だけ生成するストリームを返します。
    longs(long randomNumberOrigin, long randomNumberBound)
    指定された起点(含む)と境界(含まない)に準拠した擬似乱数 long値を含む、事実上無制限のストリームを返します。
    longs(long streamSize, long randomNumberOrigin, long randomNumberBound)
    指定された起点(含む)と境界(含まない)に準拠した擬似乱数longを、指定されたstreamSize数だけ生成するストリームを返します。
    protected int
    next(int bits)
    次の擬似乱数を生成します。
    boolean
    この乱数ジェネレータのシーケンスを使って、一様分布のboolean型の次の擬似乱数値を返します。
    void
    nextBytes(byte[] bytes)
    ランダム・バイトを生成し、ユーザー指定のバイト配列に配置します。
    double
    この乱数ジェネレータのシーケンスを使って、0.0から1.0の範囲で一様分布のdouble型の次の擬似乱数値を返します。
    float
    この乱数ジェネレータのシーケンスを使って、0.0から1.0の範囲で一様分布のfloat型の次の擬似乱数値を返します。
    double
    この乱数ジェネレータのシーケンスを使って、平均0.0、標準偏差1.0のガウス(「正規」)分布のdouble型の擬似乱数値を返します。
    int
    この乱数ジェネレータのシーケンスを使って、一様分布のint型の次の擬似乱数値を返します。
    int
    nextInt(int bound)
    この乱数ジェネレータのシーケンスを使って、0から指定された値の範囲(0は含むが、その指定された値は含まない)で一様分布のint型の擬似乱数値を返します。
    long
    この乱数ジェネレータのシーケンスを使って、一様分布のlong型の次の擬似乱数値を返します。
    void
    setSeed(long seed)
    指定されたlongシード値(オプションの操作)を使用して、この乱数ジェネレータのシードを設定または更新します。

    クラスオブジェクトで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    修飾子と型
    メソッド
    説明
    protected Object
    このオブジェクトのコピーを作成して、返します。
    boolean
    このオブジェクトと他のオブジェクトが等しいかどうかを示します。
    protected void
    削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
    最終決定は非推奨であり、将来のリリースで削除される可能性があります。
    final Class<?>
    このObjectの実行時クラスを返します。
    int
    このオブジェクトに対するハッシュ・コード値を返します。
    final void
    このオブジェクトのモニターで待機中のスレッドを1つ再開します。
    final void
    このオブジェクトのモニターで待機中のすべてのスレッドを再開します。
    オブジェクトの文字列表現を返します。
    final void
    現在のスレッドが目覚めるまで待機します。通常、notifiedまたはinterruptedです。
    final void
    wait(long timeoutMillis)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
    final void
    wait(long timeoutMillis, int nanos)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。

    インタフェースで宣言されたメソッド RandomGenerator

    equiDoubles, isDeprecated, nextDouble, nextDouble, nextExponential, nextFloat, nextFloat, nextGaussian, nextInt, nextLong, nextLong
    修飾子と型
    メソッド
    説明
    default DoubleStream
    equiDoubles(double left, double right, boolean isLeftIncluded, boolean isRightIncluded)
    疑似ランダムに選択されたdouble値の事実上無制限のストリームを返します。各値は、指定されたleft境界と指定されたright境界の間にあります。
    default boolean
    RandomGenerator (algorithm)の実装が非推奨としてマークされている場合はtrueを返します。
    default double
    nextDouble(double bound)
    ゼロ(包含)と指定した境界(除外)の間の擬似乱数的に選択したdouble値を返します。
    default double
    nextDouble(double origin, double bound)
    指定された起点(包含)と指定された境界(除外)の間の擬似乱数的に選択したdouble値を返します。
    default double
    平均が1である指数分布から擬似乱数的に選択された、負でないdouble値を返します。
    default float
    nextFloat(float bound)
    ゼロ(包含)と指定したバインド(除外)の間の擬似乱数的に選択したfloat値を返します。
    default float
    nextFloat(float origin, float bound)
    指定された起点(包含)と指定された境界(除外)の間の擬似乱数的に選択したfloat値を返します。
    default double
    nextGaussian(double mean, double stddev)
    ガウス(正規)分布から擬似乱数的に選択されたdouble値を、引数で指定された平均偏差および標準偏差で返します。
    default int
    nextInt(int origin, int bound)
    指定された起点(包含)と指定された境界(除外)の間の擬似乱数的に選択したint値を返します。
    default long
    nextLong(long bound)
    ゼロ(包含)と指定した境界(除外)の間の擬似乱数的に選択したlong値を返します。
    default long
    nextLong(long origin, long bound)
    指定された起点(包含)と指定された境界(除外)の間の擬似乱数的に選択したlong値を返します。
  • コンストラクタの詳細

    • Random

      public Random()
      新規乱数ジェネレータを作成します。 このコンストラクタは、乱数ジェネレータのシードを、このコンストラクタの他の呼び出しと区別可能な値に設定します。
    • Random

      public Random(long seed)
      単一のlong型のシードを使って、新しい乱数ジェネレータを作成します。 シードは、擬似乱数ジェネレータの内部状態の初期値で、next(int)メソッドによって保守されます。
      実装要件:
      呼び出しnew Random(seed)は次と等価です。
      Random rnd = new Random();
      rnd.setSeed(seed);
      
      パラメータ:
      seed - 初期シード
      関連項目:
  • メソッドの詳細

    • from

      public static Random from(RandomGenerator generator)
      メソッド・コールをRandomGenerator引数に委任するRandomのインスタンスを返します。 ジェネレータがRandomのインスタンスである場合、それが返されます。 それ以外の場合、このメソッドは、setSeed以外のすべてのメソッドをジェネレータに委任するRandomのインスタンスを返します。 戻されたインスタンスsetSeedメソッドは、常にUnsupportedOperationExceptionをスローします。 返されるインスタンスは直列化可能ではありません。
      パラメータ:
      generator - RandomGeneratorコールの委任先
      戻り値:
      委任Randomインスタンス
      スロー:
      NullPointerException - ジェネレータがnullの場合
      導入されたバージョン:
      19
    • setSeed

      public void setSeed(long seed)
      指定されたlongシード値(オプションの操作)を使用して、この乱数ジェネレータのシードを設定または更新します。
      実装要件:
      このクラスの実装は、この乱数ジェネレータの状態を変更して、new Random(seed)で作成されたものと同じ状態になるようにします。 シードを原子的に更新
      (seed ^ 0x5DEECE66DL) & ((1L << 48) - 1)
      nextGaussian()で使用されるhaveNextNextGaussianフラグをクリアします。 これは、指定されたシード値の48ビットのみを使用します。
      パラメータ:
      seed - シード値
      スロー:
      UnsupportedOperationException - setSeed演算がこの乱数ジェネレータでサポートされていない場合
    • next

      protected int next(int bits)
      次の擬似乱数を生成します。 このメソッドは、引数bits132 (包含)の間にある場合、戻される値の多くの下位ビットが(近似)で独立して選択されたビット値になり、それぞれが(近似)で0または1になる可能性も同様に高いint値を返します。
      APIのノート:
      このクラスの他のランダム生成メソッドは、このメソッドに関して実装されるため、サブクラスはこのメソッドのみをオーバーライドして、クラス全体の疑似乱数の異なるソースを提供できます。
      実装要件:
      このクラスの実装は、シードを原子的に更新
      (seed * 0x5DEECE66DL + 0xBL) & ((1L << 48) - 1)
      戻します
      (int)(seed >>> (48 - bits)).

      これは、D. H. Lehmerによって定義された、線形合同擬似乱数ジェネレータです。 「The Art of Computer Programming, Volume 2, Third edition: 英数字アルゴリズム」のKnuth、セクション3.2.1。

      パラメータ:
      bits - ランダム・ビット
      戻り値:
      この乱数ジェネレータのシーケンスに基づく次の擬似乱数値
      導入されたバージョン:
      1.1
    • nextBytes

      public void nextBytes(byte[] bytes)
      ランダム・バイトを生成し、ユーザー指定のバイト配列に配置します。 作成されるランダム・バイトの数は、バイト配列の長さと等しくなります。
      定義:
      インタフェースRandomGenerator内のnextBytes
      実装要件:
      RandomクラスによるnextBytesメソッドの実装は、次と同等です。
      public void nextBytes(byte[] bytes) {
        for (int i = 0; i < bytes.length; )
          for (int rnd = nextInt(), n = Math.min(bytes.length - i, 4);
               n-- > 0; rnd >>= 8)
            bytes[i++] = (byte)rnd;
      }
      パラメータ:
      bytes - 乱数バイトを格納するバイト配列
      スロー:
      NullPointerException - バイト配列がnullである場合
      導入されたバージョン:
      1.1
    • nextInt

      public int nextInt()
      この乱数ジェネレータのシーケンスを使って、一様分布のint型の次の擬似乱数値を返します。 nextIntの一般規約では、1つのint型の値が擬似乱数として生成されて返されます。 232個のすべての可能なint値が(ほぼ)均等な確率で生成されます。
      定義:
      インタフェースRandomGenerator内のnextInt
      実装要件:
      RandomクラスによるnextIntメソッドの実装は、次と同等です。
      public int nextInt() {
        return next(32);
      }
      戻り値:
      この乱数ジェネレータのシーケンスを使って生成された、一様分布のint型の次の擬似乱数値
    • nextInt

      public int nextInt(int bound)
      この乱数ジェネレータのシーケンスを使って、0から指定された値の範囲(0は含むが、その指定された値は含まない)で一様分布のint型の擬似乱数値を返します。 nextIntの一般規約では、指定された範囲内の1つのint型の値が擬似乱数として生成されて返されます。 bound個のすべての可能なint値が(ほぼ)均等な確率で生成されます。
      定義:
      インタフェースRandomGenerator内のnextInt
      実装要件:
      nextInt(int bound)メソッドは、Randomクラスによって次のように実装されます。
      public int nextInt(int bound) {
        if (bound <= 0)
          throw new IllegalArgumentException("bound must be positive");
      
        if ((bound & -bound) == bound)  // i.e., bound is a power of 2
          return (int)((bound * (long)next(31)) >> 31);
      
        int bits, val;
        do {
            bits = next(31);
            val = bits % bound;
        } while (bits - val + (bound-1) < 0);
        return val;
      }

      上記の説明で「ほぼ」という言葉を使用しているのは、nextメソッドが単にほとんど無関係に選択されたビットの中立的なソースだからです。 ランダムに選択されたビットの完全なソースであるとすれば、示されたアルゴリズムは指定された範囲から完全な一貫性でint型の値を選択することになります。

      このアルゴリズムは多少扱いづらい面があります。 このアルゴリズムは一様でない分布になる値を拒絶します(2^31がnで割れないことによる)。 値が拒絶される確率はnによって異なります。 最悪のケースはn=2^30+1で、この場合、拒絶の確率は1/2になり、ループが強制終了するまでの予想される反復回数は2回です。

      このアルゴリズムは、nが2の累乗であるケースを特別に処理します。このアルゴリズムは、基になる擬似乱数ジェネレータから適切な数の上位ビットを返します。 特別な処理がない場合は、適切な数の下位ビットが返されます。 このクラスで実装されているような線形合同擬似乱数ジェネレータは、下位ビットの値のシーケンスで周期が短いことが知られています。 そのため、この特別なケースでは、nが2の小さな累乗である場合、このメソッドの連続した呼出しによって返される値のシーケンスの長さが大幅に長くなります。

      パラメータ:
      bound - 上限(含まない)。 正の値でなければならない
      戻り値:
      この乱数ジェネレータのシーケンスを使った、0(含む)からbound(含まない)の範囲で一様分布の、int型の次の擬似乱数値
      スロー:
      IllegalArgumentException - boundが正でない場合
      導入されたバージョン:
      1.2
    • nextLong

      public long nextLong()
      この乱数ジェネレータのシーケンスを使って、一様分布のlong型の次の擬似乱数値を返します。 nextLongの一般規約では、1つのlong型の値が擬似乱数として生成されて返されます。
      定義:
      インタフェースRandomGenerator内のnextLong
      実装要件:
      RandomクラスによるnextLongメソッドの実装は、次と同等です。
      public long nextLong() {
        return ((long)next(32) << 32) + next(32);
      }
      Randomクラスは48ビットのみを含むシードを使用するため、このアルゴリズムは可能なすべてのlong値の一部しか返しません。
      戻り値:
      この乱数ジェネレータのシーケンスを使って生成された、一様分布のlong型の次の擬似乱数値
    • nextBoolean

      public boolean nextBoolean()
      この乱数ジェネレータのシーケンスを使って、一様分布のboolean型の次の擬似乱数値を返します。 nextBooleanの一般規約では、1つのboolean型の値が擬似乱数として生成されて返されます。 truefalseが(ほぼ)均等な確率で生成されます。
      定義:
      インタフェースRandomGenerator内のnextBoolean
      実装要件:
      RandomクラスによるnextBooleanメソッドの実装は、次と同等です。
      public boolean nextBoolean() {
        return next(1) != 0;
      }
      戻り値:
      この乱数ジェネレータのシーケンスを使って生成された、一様分布のboolean型の次の擬似乱数値
      導入されたバージョン:
      1.2
    • nextFloat

      public float nextFloat()
      この乱数ジェネレータのシーケンスを使って、0.0から1.0の範囲で一様分布のfloat型の次の擬似乱数値を返します。

      nextFloatの一般規約では、0.0fから1.0fの範囲(0.0fは含むが、1.0fは含まない)から(ほぼ)均等な確率で選択された1つのfloat値が擬似乱数として生成されて返されます。 形式m x 2-24(mは224未満の正の整数)の、224個のすべての可能なfloat値が(ほぼ)均等な確率で生成されます。

      定義:
      インタフェースRandomGenerator内のnextFloat
      実装要件:
      RandomクラスによるnextFloatメソッドの実装は、次と同等です。
      public float nextFloat() {
        return next(24) / ((float)(1 << 24));
      }

      上記の説明で「ほぼ」という言葉を使用しているのは、nextメソッドが単にほとんど無関係に選択されたビットの中立的なソースだからです。 ランダムに選択されたビットの完全なソースであるとすれば、示されたアルゴリズムは指定された範囲から完全な一貫性でfloat型の値を選択することになります。

      [以前のバージョンのJavaでは、結果は次のように誤って計算されました。

       return next(30) / ((float)(1 << 30));
      これでもある程度等しく思われますが、実際には、浮動小数点数の丸めでのバイアスのために多少のばらつきが生じるので、有効数字の下位ビットが、1よりも0になることが多くなりがちでした。]

      戻り値:
      この乱数ジェネレータ・シーケンスから0.0f1.0fの間に均一に分散された次の疑似ランダムfloat
    • nextDouble

      public double nextDouble()
      この乱数ジェネレータのシーケンスを使って、0.0から1.0の範囲で一様分布のdouble型の次の擬似乱数値を返します。

      nextDoubleの一般規約では、0.0dから1.0dの範囲(0.0fは含むが、1.0fは含まない)から(ほぼ)均等な確率で選択された1つのdouble値が擬似乱数として生成されて返されます。

      定義:
      インタフェースRandomGenerator内のnextDouble
      実装要件:
      RandomクラスによるnextDoubleメソッドの実装は、次と同等です。
      public double nextDouble() {
        return (((long)next(26) << 27) + next(27))
          / (double)(1L << 53);
      }

      上記の説明で「ほぼ」という言葉を使用しているのは、独立して選択されたビットのソースとしてnextメソッドが偏りがないのは、近似的にのみ成立するからです。 ランダムに選択されたビットの完全なソースであるとすれば、示されたアルゴリズムは指定された範囲から完全な一貫性でdouble型の値を選択することになります。

      [以前のバージョンのJavaでは、結果は次のように誤って計算されました。

       return (((long)next(27) << 27) + next(27)) / (double)(1L << 54);
      これは同等のように見えますが(良くはないにしても)、実際には浮動小数点数の丸めでのバイアスのために大きなばらつきが生じていました。有効数字の下位ビットが0になる(1ではなく)可能性が3倍ありました。 この程度のばらつきは実際には問題になりませんが、完全性を求めて修正を試みています。]

      戻り値:
      この乱数ジェネレータのシーケンスを使って生成された、0.0から1.0の範囲の一様分布のdouble型の次の擬似乱数値
      関連項目:
    • nextGaussian

      public double nextGaussian()
      この乱数ジェネレータのシーケンスを使って、平均0.0、標準偏差1.0のガウス(「正規」)分布のdouble型の擬似乱数値を返します。

      nextGaussianの一般規約では、平均0.0、標準偏差1.0のほぼ通常の正規分布から選択された1つのdouble値が、擬似乱数として生成されて返されます。

      定義:
      インタフェースRandomGenerator内のnextGaussian
      実装要件:
      RandomクラスによるnextGaussianメソッドの実装は、次のスレッド・セーフなバージョンと同等です。
      private double nextNextGaussian;
      private boolean haveNextNextGaussian = false;
      
      public double nextGaussian() {
        if (haveNextNextGaussian) {
          haveNextNextGaussian = false;
          return nextNextGaussian;
        } else {
          double v1, v2, s;
          do {
            v1 = 2 * nextDouble() - 1;   // between -1.0 and 1.0
            v2 = 2 * nextDouble() - 1;   // between -1.0 and 1.0
            s = v1 * v1 + v2 * v2;
          } while (s >= 1 || s == 0);
          double multiplier = StrictMath.sqrt(-2 * StrictMath.log(s)/s);
          nextNextGaussian = v2 * multiplier;
          haveNextNextGaussian = true;
          return v1 * multiplier;
        }
      }
      polar methodを使用します - これは、G. E. P. Box、M. E. Muller、およびG. Marsaglia、Donald E. 「The Art of Computer Programming, Volume 2, third edition: 英数字アルゴリズム」のKnuth、セクション3.4.1、サブセクションC、アルゴリズムP。 StrictMath.logStrictMath.sqrtの1回ずつの呼び出しだけで2つの別々の値を生成することに注意してください。
      戻り値:
      この乱数ジェネレータのシーケンスを使った、平均0.0、標準偏差1.0のガウス(「正規」)分布のdouble型の次の擬似乱数値
    • ints

      public IntStream ints(long streamSize)
      擬似乱数int値を、指定されたstreamSize数だけ生成するストリームを返します。

      メソッドnextInt()呼び出しの結果と同様に、擬似乱数int値が生成されます。

      定義:
      インタフェースRandomGenerator内のints
      パラメータ:
      streamSize - 生成する値の数
      戻り値:
      擬似乱数int値のストリーム
      スロー:
      IllegalArgumentException - streamSizeが0未満の場合
      導入されたバージョン:
      1.8
    • ints

      public IntStream ints()
      擬似乱数int値を含む、事実上無制限のストリームを返します。

      メソッドnextInt()呼び出しの結果と同様に、擬似乱数int値が生成されます。

      定義:
      インタフェースRandomGenerator内のints
      実装上のノート:
      このメソッドは、 ints(Long.MAX_VALUE)と同等であるように実装されます。
      戻り値:
      擬似乱数int値のストリーム
      導入されたバージョン:
      1.8
    • ints

      public IntStream ints(long streamSize, int randomNumberOrigin, int randomNumberBound)
      指定された起点(含む)と境界(含まない)に準拠した擬似乱数int値を、指定されたstreamSize数だけ生成するストリームを返します。

      起点と境界を指定した次のメソッド呼び出しの結果と同様に、擬似乱数int値が生成されます。

      int nextInt(int origin, int bound) {
        int n = bound - origin;
        if (n > 0) {
          return nextInt(n) + origin;
        }
        else {  // range not representable as int
          int r;
          do {
            r = nextInt();
          } while (r < origin || r >= bound);
          return r;
        }
      }

      定義:
      インタフェースRandomGenerator内のints
      パラメータ:
      streamSize - 生成する値の数
      randomNumberOrigin - 各乱数値の起点(含む)
      randomNumberBound - 各乱数値の境界(含まない)
      戻り値:
      それぞれ起点(含む)と境界(含まない)が指定された、擬似乱数int値のストリーム
      スロー:
      IllegalArgumentException - streamSizeが0未満の場合、またはrandomNumberOriginrandomNumberBound以上の場合
      導入されたバージョン:
      1.8
    • ints

      public IntStream ints(int randomNumberOrigin, int randomNumberBound)
      指定された起点(含む)と境界(含まない)に準拠した擬似乱数 int値を含む、事実上無制限のストリームを返します。

      起点と境界を指定した次のメソッド呼び出しの結果と同様に、擬似乱数int値が生成されます。

      int nextInt(int origin, int bound) {
        int n = bound - origin;
        if (n > 0) {
          return nextInt(n) + origin;
        }
        else {  // range not representable as int
          int r;
          do {
            r = nextInt();
          } while (r < origin || r >= bound);
          return r;
        }
      }

      定義:
      インタフェースRandomGenerator内のints
      実装上のノート:
      このメソッドは、 ints(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound)と同等であるように実装されます。
      パラメータ:
      randomNumberOrigin - 各乱数値の起点(含む)
      randomNumberBound - 各乱数値の境界(含まない)
      戻り値:
      それぞれ起点(含む)と境界(含まない)が指定された、擬似乱数int値のストリーム
      スロー:
      IllegalArgumentException - randomNumberOriginrandomNumberBound以上の場合
      導入されたバージョン:
      1.8
    • longs

      public LongStream longs(long streamSize)
      擬似乱数long値を、指定されたstreamSize数だけ生成するストリームを返します。

      メソッドnextLong()呼び出しの結果と同様に、擬似乱数long値が生成されます。

      定義:
      インタフェースRandomGenerator内のlongs
      パラメータ:
      streamSize - 生成する値の数
      戻り値:
      擬似乱数long値のストリーム
      スロー:
      IllegalArgumentException - streamSizeが0未満の場合
      導入されたバージョン:
      1.8
    • longs

      public LongStream longs()
      擬似乱数long値を含む、事実上無制限のストリームを返します。

      メソッドnextLong()呼び出しの結果と同様に、擬似乱数long値が生成されます。

      定義:
      インタフェースRandomGenerator内のlongs
      実装上のノート:
      このメソッドは、 longs(Long.MAX_VALUE)と同等であるように実装されます。
      戻り値:
      擬似乱数long値のストリーム
      導入されたバージョン:
      1.8
    • longs

      public LongStream longs(long streamSize, long randomNumberOrigin, long randomNumberBound)
      指定された起点(含む)と境界(含まない)に準拠した擬似乱数longを、指定されたstreamSize数だけ生成するストリームを返します。

      起点と境界を指定した次のメソッド呼び出しの結果と同様に、擬似乱数long値が生成されます。

      long nextLong(long origin, long bound) {
        long r = nextLong();
        long n = bound - origin, m = n - 1;
        if ((n & m) == 0L)  // power of two
          r = (r & m) + origin;
        else if (n > 0L) {  // reject over-represented candidates
          for (long u = r >>> 1;            // ensure nonnegative
               u + m - (r = u % n) < 0L;    // rejection check
               u = nextLong() >>> 1) // retry
              ;
          r += origin;
        }
        else {              // range not representable as long
          while (r < origin || r >= bound)
            r = nextLong();
        }
        return r;
      }

      定義:
      インタフェースRandomGenerator内のlongs
      パラメータ:
      streamSize - 生成する値の数
      randomNumberOrigin - 各乱数値の起点(含む)
      randomNumberBound - 各乱数値の境界(含まない)
      戻り値:
      それぞれ起点(含む)と境界(含まない)が指定された、擬似乱数long値のストリーム
      スロー:
      IllegalArgumentException - streamSizeが0未満の場合、またはrandomNumberOriginrandomNumberBound以上の場合
      導入されたバージョン:
      1.8
    • longs

      public LongStream longs(long randomNumberOrigin, long randomNumberBound)
      指定された起点(含む)と境界(含まない)に準拠した擬似乱数 long値を含む、事実上無制限のストリームを返します。

      起点と境界を指定した次のメソッド呼び出しの結果と同様に、擬似乱数long値が生成されます。

      long nextLong(long origin, long bound) {
        long r = nextLong();
        long n = bound - origin, m = n - 1;
        if ((n & m) == 0L)  // power of two
          r = (r & m) + origin;
        else if (n > 0L) {  // reject over-represented candidates
          for (long u = r >>> 1;            // ensure nonnegative
               u + m - (r = u % n) < 0L;    // rejection check
               u = nextLong() >>> 1) // retry
              ;
          r += origin;
        }
        else {              // range not representable as long
          while (r < origin || r >= bound)
            r = nextLong();
        }
        return r;
      }

      定義:
      インタフェースRandomGenerator内のlongs
      実装上のノート:
      このメソッドは、 longs(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound)と同等であるように実装されます。
      パラメータ:
      randomNumberOrigin - 各乱数値の起点(含む)
      randomNumberBound - 各乱数値の境界(含まない)
      戻り値:
      それぞれ起点(含む)と境界(含まない)が指定された、擬似乱数long値のストリーム
      スロー:
      IllegalArgumentException - randomNumberOriginrandomNumberBound以上の場合
      導入されたバージョン:
      1.8
    • doubles

      public DoubleStream doubles(long streamSize)
      0(含む)から1(含まない)までの擬似乱数double値を、指定されたstreamSize数だけ生成するストリームを返します。

      メソッドnextDouble()の呼出しの結果と同様に、擬似乱数double値が生成されます。

      定義:
      インタフェースRandomGenerator内のdoubles
      パラメータ:
      streamSize - 生成する値の数
      戻り値:
      double値のストリーム
      スロー:
      IllegalArgumentException - streamSizeが0未満の場合
      導入されたバージョン:
      1.8
    • doubles

      public DoubleStream doubles()
      0(含む)から1(含まない)までの擬似乱数 double値を含む、事実上無制限のストリームを返します。

      メソッドnextDouble()の呼出しの結果と同様に、擬似乱数double値が生成されます。

      定義:
      インタフェースRandomGenerator内のdoubles
      実装上のノート:
      このメソッドは、 doubles(Long.MAX_VALUE)と同等であるように実装されます。
      戻り値:
      擬似乱数double値のストリーム
      導入されたバージョン:
      1.8
    • doubles

      public DoubleStream doubles(long streamSize, double randomNumberOrigin, double randomNumberBound)
      指定された起点(含む)と境界(含まない)に準拠した擬似乱数double値を、指定されたstreamSize数だけ生成するストリームを返します。
      定義:
      インタフェースRandomGenerator内のdoubles
      パラメータ:
      streamSize - 生成する値の数
      randomNumberOrigin - 各乱数値の起点(含む)
      randomNumberBound - 各乱数値の境界(含まない)
      戻り値:
      それぞれ起点(含む)と限界(含まない)が指定された、擬似乱数double値のストリーム
      スロー:
      IllegalArgumentException - streamSizeがゼロ未満またはrandomNumberOriginが有限でない場合、またはrandomNumberBoundが有限でない場合、またはrandomNumberOriginrandomNumberBound以上である場合
      導入されたバージョン:
      1.8
    • doubles

      public DoubleStream doubles(double randomNumberOrigin, double randomNumberBound)
      指定された起点(含む)と境界(含まない)に準拠した擬似乱数 double値を含む、事実上無制限のストリームを返します。
      定義:
      インタフェースRandomGenerator内のdoubles
      実装上のノート:
      このメソッドは、 doubles(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound)と同等であるように実装されます。
      パラメータ:
      randomNumberOrigin - 各乱数値の起点(含む)
      randomNumberBound - 各乱数値の境界(含まない)
      戻り値:
      それぞれ起点(含む)と限界(含まない)が指定された、擬似乱数double値のストリーム
      スロー:
      IllegalArgumentException - randomNumberOriginが有限でない場合、またはrandomNumberBoundが有限でない場合、またはrandomNumberOriginrandomNumberBound以上である場合
      導入されたバージョン:
      1.8