RandomGenerator ইন্টারফেস
একটি নির্দিষ্ট ক্লাসের সাথে কাপলিং (coupling) না করে, নাম অনুসারে র্যান্ডম নাম্বার অ্যালগরিদম (random number algorithms) বেছে নিতে RandomGenerator ইন্টারফেস ব্যবহার করুন।
// 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();
অ্যালগরিদম-অ্যাগনস্টিক (Algorithm-agnostic)
কোড স্ট্রাকচার পরিবর্তন না করেই নাম অনুসারে সেরা RNG অ্যালগরিদম বেছে নিন।
উন্নত অ্যালগরিদম
উচ্চতর স্ট্যাটিস্টিকাল প্রোপার্টি (statistical properties) সহ আধুনিক LXM জেনারেটরগুলিতে অ্যাক্সেস করুন।
ইউনিফাইড API
একটি ইন্টারফেস Random, ThreadLocalRandom, SplittableRandom এবং আরও অনেক কিছু কভার করে।
JDK 17 (সেপ্টেম্বর 2021, JEP 356) থেকে উপলব্ধ।
JDK 17 সমস্ত RNG ইমপ্লিমেন্টেশনের (implementations) জন্য একটি কমন ইন্টারফেস হিসাবে RandomGenerator চালু করেছে। new Random() বা ThreadLocalRandom কে হার্ড-কোডিং না করে, আপনি ফ্যাক্টরির মাধ্যমে নাম অনুসারে অ্যালগরিদম সিলেক্ট করতে পারবেন, যা বিভিন্ন ইউজ কেইসের জন্য অপ্টিমাইজড (স্পিড, স্ট্যাটিস্টিকাল কোয়ালিটি, স্প্লিটএবিলিটি) অ্যালগরিদমগুলোর মধ্যে অদলবদল করা সহজ করে তোলে।