Security Średniozaawansowany

Używaj interfejsu RandomGenerator do wyboru algorytmów losowych po nazwie bez wiązania się z konkretną klasą.

✕ 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();
Widzisz problem z tym kodem? Daj nam znać.
🔧

Niezależny od algorytmu

Wybierz najlepszy algorytm RNG po nazwie bez zmiany struktury kodu.

Lepsze algorytmy

Dostęp do nowoczesnych generatorów LXM z lepszymi właściwościami statystycznymi.

🔗

Ujednolicone API

Jeden interfejs obejmuje Random, ThreadLocalRandom, SplittableRandom i więcej.

Stare podejście
new Random() / ThreadLocalRandom
Nowoczesne podejście
Fabryka RandomGenerator
Od JDK
17
Poziom trudności
Średniozaawansowany
Interfejs RandomGenerator
Dostępne

Dostępne od JDK 17 (wrzesień 2021, JEP 356)

JDK 17 wprowadził RandomGenerator jako wspólny interfejs dla wszystkich implementacji RNG. Zamiast na stałe kodować new Random() lub ThreadLocalRandom, możesz wybierać algorytmy po nazwie przez fabrykę, ułatwiając zamianę algorytmów zoptymalizowanych do różnych zastosowań (szybkość, jakość statystyczna, rozszczepialność).