RandomGeneratorFactory — 난수 생성기 팩토리
RandomGeneratorFactory — 난수 생성기 팩토리
RandomGeneratorFactory<T>는 특정 알고리즘의 여러 난수 생성기를 만들기 위한 팩토리 클래스예요. 난수 생성기 알고리즘을 선택하는 메서드도 제공해요.
본문
public final class RandomGeneratorFactory<T extends RandomGenerator> extends Object
특정 RandomGeneratorFactory는 of(String) 메서드로 찾을 수 있으며, 인자 문자열은 필요한 알고리즘의 이름이에요. all() 메서드는 작업에 적합한 RandomGeneratorFactory를 찾기 위해 검색할 수 있는 모든 가능한 팩토리의 비어 있지 않은 Stream 을 생성해요.
필요한 초기 시드 유형에 따라 RandomGenerator 인스턴스를 만드는 세 가지 메서드가 있어요. create(long)은 long 시드, create(byte[])은 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();
}
팩토리 선택
of(String name)—name알고리즘을 사용하는RandomGenerator를 만들 수 있는 팩토리를 반환해요.getDefault()— 상태 비트가 64 이상인 알고리즘의 최소 요구를 충족하는 팩토리를 반환해요.all()— 사용 가능한 모든 팩토리의 비어 있지 않은 스트림을 반환해요. deprecated로 표시된 것은 포함되지 않아요.
알고리즘 속성
name()— 알고리즘 이름을 반환해요.group()— 알고리즘의 그룹 이름을 반환해요.stateBits()— 알고리즘이 시드 상태를 유지하는 데 쓰는 비트 수를 반환해요.equidistribution()— 알고리즘의 등분포(equidistribution)를 반환해요.period()— 알고리즘의 주기를 반환하고, 결정 불가능하면BigInteger.ZERO를 반환해요.isStatistical()— 산술 알고리즘으로 계산되고 통계적으로 결정적이면true를 반환해요.isStochastic()— 외부 또는 엔트로피 소스를 입력으로 사용하면true를 반환해요.isHardware()— 하드웨어 장치(HRNG)로 엔트로피를 생성하면true를 반환해요.isArbitrarilyJumpable()/isJumpable()/isLeapable()/isSplittable()/isStreamable()— 난수 생성기의 점프/분할/스트림 특성을 나타내요.isDeprecated()— 알고리즘이 deprecated로 표시됐는지 여부를 반환해요.
생성
create()— 선택된 알고리즘 기반RandomGenerator인스턴스를 만들어요.create(long seed)— 시작long시드를 제공해 만들어요. 알고리즘이 long 시드를 지원하지 않으면 무인자create를 사용해요.create(byte[] seed)— 시작byte[]시드를 제공해 만들어요. 알고리즘이 byte[] 시드를 지원하지 않으면 무인자create를 사용해요.