RandomGeneratorFactory — 난수 생성기 팩토리

RandomGeneratorFactory — 난수 생성기 팩토리

RandomGeneratorFactory<T>특정 알고리즘의 여러 난수 생성기를 만들기 위한 팩토리 클래스예요. 난수 생성기 알고리즘을 선택하는 메서드도 제공해요.

출처: Java API Reference

본문

public final class RandomGeneratorFactory<T extends RandomGenerator> extends Object

특정 RandomGeneratorFactoryof(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를 사용해요.

더 알아보기 (Learn more)