RandomGenerator-Interface
Das RandomGenerator-Interface verwenden, um Zufallszahlenalgorithmen per Name auszuwählen, ohne an eine bestimmte Klasse gebunden zu sein.
// 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);
// 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();
Algorithmus-agnostisch
Den besten RNG-Algorithmus per Name wählen, ohne die Codestruktur zu ändern.
Bessere Algorithmen
Zugang zu modernen LXM-Generatoren mit überlegenen statistischen Eigenschaften.
Einheitliche API
Eine Schnittstelle für Random, ThreadLocalRandom, SplittableRandom und mehr.
Verfügbar seit JDK 17 (September 2021, JEP 356).
JDK 17 führte RandomGenerator als gemeinsames Interface für alle RNG-Implementierungen ein. Statt new Random() oder ThreadLocalRandom fest zu kodieren, können Algorithmen per Name über eine Factory ausgewählt werden, was den Wechsel zwischen für unterschiedliche Anwendungsfälle optimierten Algorithmen erleichtert (Geschwindigkeit, statistische Qualität, Teilbarkeit).