जावा रैंडम नंबर जेनरेटर

इंटरैक्टिव कोड उदाहरणों के साथ जावा में यादृच्छिक संख्याएँ उत्पन्न करना सीखें। विस्तृत स्पष्टीकरण के साथ Random.nextInt(), SecureRandom, ThreadLocalRandom, और Math.random() का अन्वेषण करें।

जावा कोड संपादक

इंटरैक्टिव कोड उदाहरणों के साथ जावा में यादृच्छिक संख्याएँ उत्पन्न करना सीखें। विस्तृत स्पष्टीकरण के साथ Random.nextInt(), SecureRandom, ThreadLocalRandom, और Math.random() का अन्वेषण करें।

import java.util.Random;

public class RandomExample {
    public static void main(String[] args) {
        Random rand = new Random();
        int min = 1;
        int max = 100;
        int quantity = 5;

        System.out.println("Random numbers between " + min + " and " + max + ":");
        for (int i = 0; i < quantity; i++) {
            int num = rand.nextInt(max - min + 1) + min;
            System.out.print(num + " ");
        }
    }
}

उत्पादन

यह ब्राउज़र पूर्वावलोकन है, Java या C++ का निष्पादन नहीं। मान क्रिप्टोग्राफ़ी के योग्य नहीं हैं।

उदाहरण का पूर्वावलोकन

java.util.Random के साथ बेसिक रैंडम

एक विशिष्ट श्रेणी में यादृच्छिक पूर्णांक उत्पन्न करने के लिए Random.nextInt() का उपयोग करें। जावा में सामान्य प्रयोजन यादृच्छिक संख्या जनरेशन के लिए यह सबसे आम तरीका है।

एक त्वरित यादृच्छिक संख्या की आवश्यकता है?

बिना कोई कोड लिखे तत्काल परिणाम के लिए हमारे ऑनलाइन यादृच्छिक संख्या जनरेटर का प्रयास करें।

रैंडम नंबर जेनरेटर खोलें

जावा रैंडम नंबर जनरेशन को समझना

जावा यादृच्छिक संख्याएँ उत्पन्न करने के कई तरीके प्रदान करता है, प्रत्येक को अलग-अलग उपयोग के मामलों के लिए अनुकूलित किया गया है। java.util.Random एक रैखिक सर्वांगसम जेनरेटर (LCG) एल्गोरिथ्म का उपयोग करता है, SecureRandom क्रिप्टोग्राफ़िक रूप से मजबूत यादृच्छिक संख्या प्रदान करता है, ThreadLocalRandom समवर्ती अनुप्रयोगों के लिए थ्रेड-सुरक्षित पीढ़ी प्रदान करता है, और Math.random() यादृच्छिक युगल उत्पन्न करने का एक सरल तरीका प्रदान करता है।

java.util.Random

java.util.Random सिमुलेशन, गेम और सामान्य प्रोग्रामिंग कार्यों के लिए उपयुक्त तेज़ छद्म-यादृच्छिक संख्या पीढ़ी प्रदान करता है। बुनियादी उपयोग के लिए थ्रेड-सुरक्षित।

सिक्योररैंडम

java.security.SecureRandom सुरक्षा अनुप्रयोगों के लिए क्रिप्टोग्राफिक रूप से सुरक्षित यादृच्छिक संख्या उत्पन्न करने के लिए प्लेटफ़ॉर्म-विशिष्ट एल्गोरिदम (SHA1PRNG, NativePRNG) का उपयोग करता है।

ThreadLocalRandom

ThreadLocalRandom कुशल थ्रेड-सुरक्षित रैंडम नंबर जनरेशन प्रदान करता है जो विशेष रूप से बहु-थ्रेडेड अनुप्रयोगों के लिए डिज़ाइन किया गया है, विवाद और सिंक्रनाइज़ेशन ओवरहेड से बचता है।

गणित.यादृच्छिक ()

Math.random() एक सरल विधि है जो 0.0 और 1.0 के बीच दोहरा मान लौटाती है। त्वरित गणना के लिए सुविधाजनक लेकिन अन्य विकल्पों की तुलना में कम लचीला।

सामान्य उपयोग के मामले

गेमिंग और सिमुलेशन

गेम लूप में Random.nextInt() या ThreadLocalRandom का उपयोग करके यादृच्छिक पासा रोल, कार्ड ड्रॉ, दुश्मन स्पॉन और गेम ईवेंट उत्पन्न करें।

सुरक्षा और क्रिप्टोग्राफी

क्रिप्टोग्राफ़िक शक्ति यादृच्छिकता के लिए SecureRandom का उपयोग करके सुरक्षित पासवर्ड, API कुंजियाँ, सत्र टोकन और एन्क्रिप्शन लवण बनाएं।

समवर्ती अनुप्रयोग

विवाद से बचने और प्रदर्शन में सुधार करने के लिए समानांतर स्ट्रीम और बहु-थ्रेडेड अनुप्रयोगों में ThreadLocalRandom का उपयोग करें।

सॉफ्टवेयर परीक्षण

जावा अनुप्रयोगों में मजबूत कोड कवरेज और बग डिटेक्शन सुनिश्चित करने के लिए यादृच्छिक परीक्षण डेटा, फ़ज़ परीक्षण इनपुट और एज केस बनाएं।

जावा रैंडम नंबर जनरेशन कैसे काम करता है

Java's java.util.Random class uses a Linear Congruential Generator (LCG) algorithm with a 48-bit seed. It provides a simple way to generate pseudo-random numbers and is synchronized for thread safety.

The SecureRandom class provides cryptographically strong random numbers by using platform-specific implementations. On most systems, it uses the operating system's entropy source or hardware random number generators.

ThreadLocalRandom, introduced in Java 7, is designed for multi-threaded applications. It uses a random number generator that is isolated to the current thread, avoiding synchronization overhead and contention.

व्यावहारिक सुझाव

🎯

सही एपीआई चुनें

साधारण मामलों के लिए रैंडम, सुरक्षा के लिए SecureRandom, समवर्ती ऐप्स के लिए ThreadLocalRandom और केवल त्वरित प्रोटोटाइप के लिए Math.random() का उपयोग करें। प्रत्येक के विशिष्ट उपयोग के मामले हैं।

🔒

सुरक्षा के लिए हमेशा SecureRandom का उपयोग करें

पासवर्ड, टोकन या क्रिप्टोग्राफ़िक संचालन के लिए कभी भी रैंडम या Math.random() का उपयोग न करें। मजबूत यादृच्छिकता सुनिश्चित करने और पूर्वानुमानित पैटर्न से बचने के लिए हमेशा सिक्योररैंडम का उपयोग करें।

⚡

समवर्ती पहुँच के लिए ऑप्टिमाइज़ करें

बहु-थ्रेडेड अनुप्रयोगों में, ThreadLocalRandom रैंडम ऑब्जेक्ट्स को सिंक्रनाइज़ करने से काफी तेज़ है। इसे समानांतर धाराओं और समवर्ती संग्रहों में उपयोग करें।

तकनीकी निर्देश

एल्गोरिदम

  • रैखिक सर्वांगसम जेनरेटर (रैंडम क्लास)
  • SHA1PRNG या नेटिवपीआरएनजी (सिक्योररैंडम)
  • ThreadLocalRandom (जावा 7+, रैंडम पर आधारित)
  • छद्म-यादृच्छिक डबल (Math.random())

प्रदर्शन गुण

  • Math.random(): सरल युगल के लिए सबसे तेज़
  • ThreadLocalRandom: समवर्ती पहुंच के लिए सर्वश्रेष्ठ
  • यादृच्छिक: अच्छा सामान्य उद्देश्य, सिंक्रनाइज़ ओवरहेड
  • SecureRandom: एन्ट्रापी इकट्ठा करने के कारण धीमा

अक्सर पूछे जाने वाले प्रश्न

कौन से जावा API शामिल हैं?

java.util.Random, SecureRandom, ThreadLocalRandom और Math.random(), प्रत्येक के लिए एक केंद्रित उदाहरण।

क्या मैं उदाहरणों को अपनी आवश्यकता के अनुसार ढाल सकता हूँ?

हाँ। पैरामीटर पैनल में न्यूनतम, अधिकतम और मात्रा सेट करें और तुरंत परिणाम देखने के लिए चलाएँ।

सुरक्षा के लिए मुझे कौन सा उपयोग करना चाहिए?

SecureRandom। अन्य API पूर्वानुमेय हैं और टोकन, कुंजी या पासवर्ड बनाने के लिए इनका उपयोग नहीं करना चाहिए।

मल्टीथ्रेडेड कोड के बारे में क्या?

ThreadLocalRandom थ्रेड्स के बीच टकराव से बचाता है और समानांतर स्ट्रीम तथा थ्रेड पूल के भीतर यही आमतौर पर चुना जाने वाला विकल्प है।

जावा में दो मानों के बीच एक यादृच्छिक संख्या कैसे उत्पन्न करें?

0 से bound-1 तक के मानों के लिए nextInt(bound) को कॉल करें, इसलिए nextInt(50) 0 से 49 तक के मान देता है। कस्टम रेंज के लिए एक ऑफ़सेट जोड़ें: nextInt(10) + 5 से 5 से 14 तक के मान बनते हैं। Java 17 से, nextInt(origin, bound) इसे एक ही कॉल में कर देता है, जिसमें origin सम्मिलित (inclusive) होता है और bound असम्मिलित (exclusive)।

क्या Math.random() 1 लौटा सकता है?

नहीं। Math.random() 0.0 सम्मिलित से लेकर 1.0 तक का एक double लौटाता है, परंतु 1.0 कभी शामिल नहीं होता, इसलिए 0.0 या 0.9999 दिख सकता है लेकिन 1.0 कभी नहीं। आंतरिक रूप से यह एक ही java.util.Random इंस्टेंस को काम सौंपता है, इसलिए आधुनिक कोड के लिए सीधे Random के मेथड्स को कॉल करना अधिक स्पष्ट है।

प्रोग्राम चलाने पर मुझे हर बार वही यादृच्छिक संख्याएँ क्यों मिलती हैं?

निश्चित सीड (seed) के साथ बनाया गया Random, जैसे new Random(42), हमेशा वही क्रम दोहराता है। सीड तर्क हटा दें तो यह स्वतः ही System.nanoTime() के साथ जोड़े गए एक अद्वितीय मान से सीड कर लेता है। निश्चित सीड पुनरुत्पादनीय टेस्ट और डिबगिंग के लिए उपयोगी होते हैं, लेकिन इन्हें प्रोडक्शन कोड से बाहर ही रखना चाहिए।

ऐरे या लिस्ट से एक यादृच्छिक तत्व कैसे चुनें?

एक इंडेक्स उत्पन्न करें और उस स्थिति को पढ़ें: लिस्ट के लिए list.get(random.nextInt(list.size())) या ऐरे के लिए array[random.nextInt(array.length)], क्योंकि nextInt(n) 0 से n-1 तक फैला होता है। वैकल्पिक रूप से, Collections.shuffle() एक ही पास में पूरी लिस्ट के क्रम को यादृच्छिक कर देता है, इसलिए एक ही shuffle में कोई तत्व दोहराया नहीं जाता।

संदर्भ और संसाधन