Security 중급

RandomGenerator 인터페이스

이름으로 난수 알고리즘을 선택하기 위해 RandomGenerator 인터페이스를 사용합니다.

✕ Java 8
// Hard-coded to one algorithm
Random rng = new Random();
int value = rng.nextInt(100);

// Or thread-local, but still locked in
int value = ThreadLocalRandom.current()
    .nextInt(100);
✓ Java 17+
// Algorithm-agnostic via factory
var rng = RandomGenerator.of("L64X128MixRandom");
int value = rng.nextInt(100);

// Or get a splittable generator
var rng = RandomGeneratorFactory
    .of("L64X128MixRandom").create();
이 코드에 문제가 있나요? 알려주세요.
🔧

알고리즘 무관

코드 구조를 변경하지 않고 이름으로 최적의 RNG 알고리즘을 선택합니다.

더 나은 알고리즘

우수한 통계적 특성을 가진 최신 LXM 생성기에 접근합니다.

🔗

통일된 API

하나의 인터페이스가 Random, ThreadLocalRandom, SplittableRandom 등을 모두 포괄합니다.

이전 방식
new Random() / ThreadLocalRandom
모던 방식
RandomGenerator 팩토리
JDK 버전
17
난이도
중급
RandomGenerator 인터페이스
사용 가능

JDK 17 (2021년 9월, JEP 356) 이후 사용 가능.

JDK 17은 모든 RNG 구현을 위한 공통 인터페이스로 RandomGenerator를 도입했습니다. 알고리즘을 이름으로 선택하고 코드 구조를 변경하지 않고도 교체할 수 있습니다.

공유 𝕏 🦋 in