SplittableRandom — 분할 가능한 의사 난수 생성기
SplittableRandom — 분할 가능한 의사 난수 생성기
int, long, double 타입의 균등 의사 난수값(주기 2^64)을 생성하는 생성기예요. 특히 하위 작업(subtask)을 생성할 수 있는 격리된 병렬 계산에 적용하기 좋아요.
본문
public final class SplittableRandom implements RandomGenerator, Serializable
사용법은 Random 클래스와 비슷하지만 다음과 같은 차이점이 있어요:
- 생성된 값 계열은 난수 생성기의 독립성·균등성 속성을 검사하는 DieHarder 스위트를 통과해요. 생성값이 반복되기 전 계열의 길이인 주기(period)는 2^64예요.
split()메서드는 현재 인스턴스와 가변 상태를 공유하지 않는 새SplittableRandom인스턴스를 생성하고 반환해요.SplittableRandom인스턴스는 스레드 안전하지 않아요. 스레드 간에 공유되기보다는 분할되도록 설계됐어요.- 난수 스트림을 생성하는 추가 메서드를 제공하며, 이는
stream.parallel()모드에서 위 기법을 사용해요.
SplittableRandom 인스턴스는 암호학적으로 안전하지 않아요.
주요 메서드
split()— 이 인스턴스와 가변 상태를 공유하지 않는 새 난수 생성기를 반환해요.nextInt()/nextInt(int bound)— 균등 분포의int난수를 생성해요.nextLong()— 균등 분포의long난수를 생성해요.nextDouble()— 균등 분포의double난수를 생성해요.ints(...)/longs(...)/doubles(...)— 난수를 생성하는 스트림을 반환해요.