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

クラスRandomGeneratorFactory<T extends RandomGenerator>

java.lang.Object
java.util.random.RandomGeneratorFactory<T>
型パラメータ:
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()
        .filter(rgf -> !rgf.name().equals("SecureRandom")) // SecureRandom has MAX_VALUE stateBits.
        .sorted(Comparator.comparingInt(RandomGeneratorFactory<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
関連項目: