モジュール java.base
パッケージ java.util.random

クラスRandomGeneratorFactory<T extends RandomGenerator>

java.lang.Object
java.util.random.RandomGeneratorFactory<T>

public final class RandomGeneratorFactory<T extends RandomGenerator> extends Object
これは、特定のalgorithmの複数の乱数ジェネレータを生成するためのファクトリ・クラスです。 RandomGeneratorFactoryには、乱数ジェネレータ・アルゴリズムを選択するメソッドも用意されています。 特定のRandomGeneratorFactoryは、of(String)メソッドを使用して配置できます。引数文字列は、必要なalgorithmの名前です。 メソッドall()は、タスクに適したRandomGeneratorFactoryを検索できる、すべての使用可能なRandomGeneratorFactorysの空でないStreamを生成します。 必要な初期シードのタイプに応じて、RandomGeneratorインスタンスを作成するメソッドは3つあります。create(long)は長いシード作成に使用され、create(byte[])はバイト[]シード作成に使用され、create()はランダム・シード作成に使用されます。 例;

    RandomGeneratorFactory<RandomGenerator> factory = RandomGeneratorFactory.of("Random");

     for (int i = 0; i < 10; i++) {
         new Thread(() -> {
             RandomGenerator random = factory.create(100L);
             System.out.println(random.nextDouble());
         }).start();
     }
 
RandomGeneratorFactoryには、ジェネレータの属性(またはプロパティ)を説明するメソッドも用意されており、乱数ジェネレータ「アルゴリズム」の選択に使用できます。 これらのメソッドは通常、all()と組み合わせて使用します。 この例では、コードによって、RandomGeneratorsを生成するRandomGeneratorFactoryが最大数の状態ビットで特定されます。

     RandomGeneratorFactory<RandomGenerator> best = RandomGeneratorFactory.all()
         .sorted(Comparator.comparingInt(RandomGenerator::stateBits).reversed())
         .findFirst()
         .orElse(RandomGeneratorFactory.of("Random"));
     System.out.println(best.name() + " in " + best.group() + " was selected");

     RandomGenerator rng = best.create();
     System.out.println(rng.nextLong());
 
導入されたバージョン:
17
関連項目:
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    all()
    使用可能なRandomGeneratorFactory(s)の空でないストリームを返します。
    選択したalgorithmに基づいてRandomGeneratorのインスタンスを作成します。
    create(byte[] seed)
    開始バイトの[]シードを指定するalgorithmに基づいて、RandomGeneratorのインスタンスを作成します。
    create(long seed)
    開始の長いシードを提供するalgorithmに基づいてRandomGeneratorのインスタンスを作成します。
    int
    algorithmの等分布を返します。
    状態ビットが64以上のアルゴリズムを持つ最小要件を満たすRandomGeneratorFactoryを返します。
    乱数ジェネレータで使用されるalgorithmのグループ名を返します。
    boolean
    ランダム・ジェネレータが任意に指定の距離ポイントをステート・サイクル内でジャンプできる場合はtrueを返します。
    boolean
    RandomGenerator (algorithm)の実装が非推奨としてマークされている場合はtrueを返します。
    boolean
    ランダム・ジェネレータがハードウェア・デバイス(HRNG)を使用してエントロピ入力を生成する場合は、trueを返します。
    boolean
    ランダム・ジェネレータがステート・サイクルの指定した遠い点にジャンプできる場合はtrueを返します。
    boolean
    ランダム・ジェネレータがジャンプ可能であり、ステート・サイクルの非常に遠いポイントに飛ぶことができる場合はtrueを返します。
    boolean
    ランダム・ジェネレータを同じプロパティを持つ別のオブジェクトにクローニングできるが、状態サイクルでさらに配置できる場合は、trueを返します。
    boolean
    ランダム・ジェネレータが算術algorithmを使用して計算され、統計的に決定的である場合、trueを返します。
    boolean
    外部ソースまたはエントロピ・ソースを入力として使用してランダム・ジェネレータを計算する場合は、trueを返します。
    boolean
    ランダム・ジェネレータを使用して乱数のStreamsを作成できる場合はtrueを返します。
    乱数ジェネレータで使用されるalgorithmの名前を返します。
    of(String name)
    name algorithmを使用するRandomGeneratorのインスタンスを生成できるRandomGeneratorFactoryを返します。
    乱数ジェネレータで使用されるalgorithmの期間を返します。
    int
    シードの状態を維持するためにalgorithmによって使用されるビット数を返します。

    クラス java.lang.Objectで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • メソッドの詳細

    • of

      public static <T extends RandomGenerator> RandomGeneratorFactory<T> of(String name)
      name algorithmを使用するRandomGeneratorのインスタンスを生成できるRandomGeneratorFactoryを返します。
      実装要件:
      可用性は、サービス・プロバイダAPIを使用してRandomGeneratorFactoryによって決定され、RandomGeneratorインタフェースの実装が特定されます。
      型パラメータ:
      T - 生成するRandomGeneratorのサブインタフェース
      パラメータ:
      name - 乱数ジェネレータの名前algorithm
      戻り値:
      RandomGeneratorRandomGeneratorFactory
      例外:
      NullPointerException - nameがnullである場合
      IllegalArgumentException - 指定されたアルゴリズムが見つからない場合
    • getDefault

      public static RandomGeneratorFactory<RandomGenerator> getDefault()
      状態ビットが64以上のアルゴリズムを持つ最小要件を満たすRandomGeneratorFactoryを返します。
      実装要件:
      アルゴリズムは時間の経過とともに向上するため、このメソッドが時間の経過に伴って同じアルゴリズムを返す保証はありません。
      戻り値:
      a RandomGeneratorFactory
    • all

      使用可能なRandomGeneratorFactory(s)の空でないストリームを返します。 非推奨としてマークされたRandomGeneratorsは、結果に含まれません。
      実装要件:
      可用性は、サービス・プロバイダAPIを使用してRandomGeneratorFactoryによって決定され、RandomGeneratorインタフェースの実装が特定されます。
      戻り値:
      使用可能なすべてのRandomGeneratorFactory(s)の空ではないストリーム。
    • name

      public String name()
      乱数ジェネレータで使用されるalgorithmの名前を返します。
      戻り値:
      algorithmの名前。
    • group

      public String group()
      乱数ジェネレータで使用されるalgorithmのグループ名を返します。
      戻り値:
      algorithmのグループ名。
    • stateBits

      public int stateBits()
      シードの状態を維持するためにalgorithmによって使用されるビット数を返します。
      戻り値:
      シードの状態を維持するためにalgorithmによって使用されるビット数。
    • equidistribution

      public int equidistribution()
      algorithmの等分布を返します。
      戻り値:
      algorithmの等分布。
    • period

      public BigInteger period()
      乱数ジェネレータで使用されるalgorithmの期間を返します。 期間が不確定の場合、BigInteger.ZEROを返します。
      戻り値:
      BigInteger period.
    • isStatistical

      public boolean isStatistical()
      ランダム・ジェネレータが算術algorithmを使用して計算され、統計的に決定的である場合、trueを返します。
      戻り値:
      ランダム・ジェネレータが統計の場合はtrue。
    • isStochastic

      public boolean isStochastic()
      外部ソースまたはエントロピ・ソースを入力として使用してランダム・ジェネレータを計算する場合は、trueを返します。
      戻り値:
      ランダム・ジェネレータが確率の場合にtrue。
    • isHardware

      public boolean isHardware()
      ランダム・ジェネレータがハードウェア・デバイス(HRNG)を使用してエントロピ入力を生成する場合は、trueを返します。
      戻り値:
      ランダム・ジェネレータがハードウェアによって生成される場合はtrue。
    • isArbitrarilyJumpable

      public boolean isArbitrarilyJumpable()
      ランダム・ジェネレータが任意に指定の距離ポイントをステート・サイクル内でジャンプできる場合はtrueを返します。
      戻り値:
      ランダム・ジェネレータがジャンプ可能な場合はtrue。
    • isJumpable

      public boolean isJumpable()
      ランダム・ジェネレータがステート・サイクルの指定した遠い点にジャンプできる場合はtrueを返します。
      戻り値:
      ランダム・ジェネレータがジャンプ可能な場合はtrue。
    • isLeapable

      public boolean isLeapable()
      ランダム・ジェネレータがジャンプ可能であり、ステート・サイクルの非常に遠いポイントに飛ぶことができる場合はtrueを返します。
      戻り値:
      ランダム・ジェネレータがうるさぎの場合はtrue。
    • isSplittable

      public boolean isSplittable()
      ランダム・ジェネレータを同じプロパティを持つ別のオブジェクトにクローニングできるが、状態サイクルでさらに配置できる場合は、trueを返します。
      戻り値:
      ランダム・ジェネレータが分割可能な場合はtrue。
    • isStreamable

      public boolean isStreamable()
      ランダム・ジェネレータを使用して乱数のStreamsを作成できる場合はtrueを返します。
      戻り値:
      ランダム・ジェネレータがストリーム可能な場合はtrue。
    • isDeprecated

      public boolean isDeprecated()
      RandomGenerator (algorithm)の実装が非推奨としてマークされている場合はtrueを返します。
      実装上のノート:
      乱数ジェネレータ・アルゴリズムが何度も進化し、新しいアルゴリズムが導入され、古いアルゴリズムが起動しなくなります。 古いアルゴリズムが継続使用に適していないと判断された場合、将来ある時点で削除可能であることを示すために非推奨としてマークされます。
      戻り値:
      RandomGenerator (algorithm)の実装が非推奨としてマークされている場合はtrue
    • create

      public T create()
      選択したalgorithmに基づいてRandomGeneratorのインスタンスを作成します。
      戻り値:
      RandomGeneratorの新しいインスタンス。
    • create

      public T create(long seed)
      開始の長いシードを提供するalgorithmに基づいてRandomGeneratorのインスタンスを作成します。 アルゴリズムで長いシードがサポートされていない場合は、createの引数形式が使用されません。
      パラメータ:
      seed - 長いランダム・シード値。
      戻り値:
      RandomGeneratorの新しいインスタンス。
    • create

      public T create(byte[] seed)
      開始バイトの[]シードを指定するalgorithmに基づいて、RandomGeneratorのインスタンスを作成します。 バイトの[]シードがalgorithmでサポートされていない場合、createの引数形式は使用されません。
      パラメータ:
      seed - byte配列のランダムなシード値。
      戻り値:
      RandomGeneratorの新しいインスタンス。
      例外:
      NullPointerException - シードがNULLの場合。