RandomGenerator arayüzü
Belirli bir sınıfa bağlı kalmadan rastgele sayı algoritmalarını ada göre seçmek için RandomGenerator arayüzünü kullanın.
Kod Karşılaştırması
✕ 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();
Bu kodda bir sorun mu gördünüz? Bize bildirin.
Modern yöntem neden daha iyi
Algoritmadan bağımsız
Kod yapısını değiştirmeden en iyi RNG algoritmasını ada göre seçin.
Daha iyi algoritmalar
Üstün istatistiksel özelliklere sahip modern LXM üreticilerine erişim.
Birleşik API
Tek arayüz; Random, ThreadLocalRandom, SplittableRandom ve daha fazlasını kapsar.
Eski Yaklaşım
new Random() / ThreadLocalRandom
Modern Yaklaşım
RandomGenerator fabrikası
JDK'dan itibaren
17
Zorluk
Orta
JDK Desteği
RandomGenerator arayüzü
Mevcut
JDK 17'den itibaren kullanılabilir (Eylül 2021, JEP 356).
Nasıl çalışır
JDK 17, tüm RNG uygulamaları için ortak arayüz olarak RandomGenerator'ı tanıttı. new Random() veya ThreadLocalRandom'ı sabit kodlamak yerine, farklı kullanım durumları için optimize edilmiş algoritmalar arasında kolayca geçiş yapmayı sağlayan bir fabrika aracılığıyla ada göre algoritma seçebilirsiniz (hız, istatistiksel kalite, bölünebilirlik).
İlgili Belgeler