java.lang.Object
java.util.random.RandomGeneratorFactory<T>
- 型パラメータ:
T
- 作成済ランダム・ジェネレータのタイプ
public final class RandomGeneratorFactory<T extends RandomGenerator> extends Object
これは、特定のalgorithmの複数の乱数ジェネレータを生成するためのファクトリ・クラスです。
RandomGeneratorFactoryには、ジェネレータの属性(またはプロパティ)を説明するメソッドも用意されており、乱数ジェネレータ「アルゴリズム」の選択に使用できます。 これらのメソッドは通常、
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();
}
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
- 関連項目:
-
メソッドのサマリー
修飾子と型メソッド説明static Stream
<RandomGeneratorFactory<RandomGenerator>> all()
使用可能なRandomGeneratorFactory(s)
の空でないストリームを返します。create()
選択したalgorithmに基づいてRandomGenerator
のインスタンスを作成します。create
(byte[] seed) 開始バイトの[]シードを指定するalgorithmに基づいて、RandomGenerator
のインスタンスを作成します。create
(long seed) 開始の長いシードを提供するalgorithmに基づいてRandomGenerator
のインスタンスを作成します。int
algorithmの等分布を返します。状態ビットが64以上のアルゴリズムを持つ最小要件を満たすRandomGeneratorFactory
を返します。group()
乱数ジェネレータで使用されるalgorithmのグループ名を返します。boolean
ランダム・ジェネレータが任意に指定の距離ポイントをステート・サイクル内でジャンプできる場合はtrueを返します。boolean
RandomGenerator (algorithm)の実装が非推奨としてマークされている場合はtrueを返します。boolean
ランダム・ジェネレータがハードウェア・デバイス(HRNG)を使用してエントロピ入力を生成する場合は、trueを返します。boolean
ランダム・ジェネレータがステート・サイクルの指定した遠い点にジャンプできる場合はtrueを返します。boolean
ランダム・ジェネレータがジャンプ可能であり、ステート・サイクルの非常に遠いポイントに飛ぶことができる場合はtrueを返します。boolean
ランダム・ジェネレータを同じプロパティを持つ別のオブジェクトにクローニングできるが、状態サイクルでさらに配置できる場合は、trueを返します。boolean
ランダム・ジェネレータが算術algorithmを使用して計算され、統計的に決定的である場合、trueを返します。boolean
外部ソースまたはエントロピ・ソースを入力として使用してランダム・ジェネレータを計算する場合は、trueを返します。boolean
ランダム・ジェネレータを使用して乱数のStreams
を作成できる場合はtrueを返します。name()
乱数ジェネレータで使用されるalgorithmの名前を返します。static <T extends RandomGenerator>
RandomGeneratorFactory<T> name
algorithmを使用するRandomGenerator
のインスタンスを生成できるRandomGeneratorFactory
を返します。period()
乱数ジェネレータで使用されるalgorithmの期間を返します。int
シードの状態を維持するためにalgorithmによって使用されるビット数を返します。
-
メソッドの詳細
-
of
public static <T extends RandomGenerator> RandomGeneratorFactory<T> of(String name) name
algorithmを使用するRandomGenerator
のインスタンスを生成できるRandomGeneratorFactory
を返します。- 実装要件:
- 可用性は、サービス・プロバイダAPIを使用してRandomGeneratorFactoryによって決定され、RandomGeneratorインタフェースの実装が特定されます。
- 型パラメータ:
T
- 生成するRandomGenerator
のサブインタフェース- パラメータ:
name
- 乱数ジェネレータの名前algorithm- 戻り値:
RandomGenerator
のRandomGeneratorFactory
- 例外:
NullPointerException
- nameがnullである場合IllegalArgumentException
- 指定されたアルゴリズムが見つからない場合
-
getDefault
public static RandomGeneratorFactory<RandomGenerator> getDefault()状態ビットが64以上のアルゴリズムを持つ最小要件を満たすRandomGeneratorFactory
を返します。- 実装要件:
- アルゴリズムは時間の経過とともに向上するため、このメソッドが時間の経過に伴って同じアルゴリズムを返す保証はありません。
- 戻り値:
- a
RandomGeneratorFactory
-
all
public static Stream<RandomGeneratorFactory<RandomGenerator>> all()使用可能なRandomGeneratorFactory(s)
の空でないストリームを返します。 非推奨としてマークされたRandomGeneratorsは、結果に含まれません。- 実装要件:
- 可用性は、サービス・プロバイダAPIを使用してRandomGeneratorFactoryによって決定され、RandomGeneratorインタフェースの実装が特定されます。
- 戻り値:
- 使用可能なすべての
RandomGeneratorFactory(s)
の空ではないストリーム。
-
name
-
group
-
stateBits
-
equidistribution
-
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
-
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の場合。
-