C# Programming

C# में रैंडम संख्याएँ उत्पन्न करना: एक व्यापक गाइड

Spread the love

C# में रैंडम नंबर जनरेट करना: एक व्यापक गाइड

  1. Random क्लास को समझना
  2. रैंडम पूर्णांक जनरेट करना
  3. रैंडम फ्लोटिंग-पॉइंट नंबर जनरेट करना
  4. कुशलतापूर्वक कई रैंडम नंबर जनरेट करना
  5. रैंडम नंबर जनरेटर को सीड करना
  6. क्रिप्टोग्राफिक रूप से सुरक्षित रैंडम नंबर
  7. निष्कर्ष
  8. अक्सर पूछे जाने वाले प्रश्न (FAQ)

1. Random क्लास को समझना

C# का System.Random क्लास स्यूडो-रैंडम नंबर जनरेट करने का प्राथमिक उपकरण है। ये वास्तव में रैंडम नहीं होते (जिसके लिए एक भौतिक एंट्रॉपी स्रोत की आवश्यकता होती है), लेकिन अधिकांश अनुप्रयोगों के लिए क्रम यादृच्छिक दिखाई देते हैं। ये एक प्रारंभिक सीड मान से नियतात्मक रूप से उत्पन्न होते हैं। समान सीड समान क्रम उत्पन्न करता है, जो डीबगिंग के लिए उपयोगी है लेकिन उन अनुप्रयोगों के लिए याद रखना महत्वपूर्ण है जिन्हें वास्तविक यादृच्छिकता की आवश्यकता होती है।

2. रैंडम पूर्णांक जनरेट करना

मुख्य विधि Random.Next() है। प्रमुख ओवरलोड:

  • Next(): int.MaxValue से कम एक गैर-ऋणात्मक पूर्णांक देता है।
  • Next(maxValue): maxValue से कम एक गैर-ऋणात्मक पूर्णांक देता है (maxValue धनात्मक होना चाहिए)।
  • Next(minValue, maxValue): एक पूर्णांक देता है जो minValue ≥ है और maxValue < है (maxValue > minValue)।

उदाहरण:


using System;

public class RandomNumberGenerator
{
    public static void Main(string[] args)
    {
        Random random = new Random();

        int randomNumber1 = random.Next(10); // 0 से 9
        Console.WriteLine($"रैंडम नंबर 1: {randomNumber1}");

        int randomNumber2 = random.Next(5, 15); // 5 से 14
        Console.WriteLine($"रैंडम नंबर 2: {randomNumber2}");
    }
}

3. रैंडम फ्लोटिंग-पॉइंट नंबर जनरेट करना

0.0 (समावेशी) और 1.0 (अनन्य) के बीच रैंडम डबल-परिशुद्धता फ्लोटिंग-पॉइंट नंबर जनरेट करने के लिए, random.NextDouble() का उपयोग करें। अन्य श्रेणियों के लिए इसे स्केल और शिफ्ट करें:


double randomNumber = random.NextDouble() * 100; // 0.0 से 100.0

4. कुशलतापूर्वक कई रैंडम नंबर जनरेट करना

कई नंबर जनरेट करते समय दक्षता के लिए एक ही Random उदाहरण का पुन: उपयोग करें। कई उदाहरणों को जल्दी से बनाना (डिफ़ॉल्ट कंस्ट्रक्टर का उपयोग करके, सिस्टम क्लॉक द्वारा सीड किया गया) समान क्रमों को जन्म दे सकता है, जिससे स्पष्ट यादृच्छिकता कम हो जाती है।


Random random = new Random();
for (int i = 0; i < 10; i++)
{
    int randomNumber = random.Next(1, 101); // 1 से 100 (समावेशी)
    Console.WriteLine($"रैंडम नंबर {i + 1}: {randomNumber}");
}

5. रैंडम नंबर जनरेटर को सीड करना

Random कंस्ट्रक्टर को एक सीड प्रदान करके क्रम को नियंत्रित करें:

  • पुनरुत्पादनशीलता: समान सीड = समान क्रम (परीक्षण के लिए आवश्यक)।
  • विशिष्ट क्रम: सिमुलेशन के लिए उपयोगी।

Random random1 = new Random(12345);
Console.WriteLine($"12345 सीड के साथ रैंडम नंबर: {random1.Next(100)}");

Random random2 = new Random(12345);
Console.WriteLine($"12345 सीड के साथ रैंडम नंबर (फिर से): {random2.Next(100)}"); // ऊपर जैसा ही

Random random3 = new Random(); // वर्तमान समय को सीड के रूप में
Console.WriteLine($"वर्तमान समय सीड के साथ रैंडम नंबर: {random3.Next(100)}");

6. क्रिप्टोग्राफिक रूप से सुरक्षित रैंडम नंबर

सुरक्षा-संवेदनशील अनुप्रयोगों के लिए, कभी भी System.Random का उपयोग न करें। इसके बजाय System.Security.Cryptography.RandomNumberGenerator का उपयोग करें।

7. निष्कर्ष

Random क्लास आसान स्यूडो-रैंडम नंबर जनरेशन प्रदान करता है। सीडिंग और इंस्टेंस पुन: उपयोग को समझना पुनरुत्पादनशीलता और दक्षता दोनों के लिए महत्वपूर्ण है। सुरक्षा के लिए क्रिप्टोग्राफिक RNG को प्राथमिकता दें।

8. अक्सर पूछे जाने वाले प्रश्न (FAQ)

प्रश्न: क्या संख्याएँ वास्तव में यादृच्छिक हैं? उत्तर: नहीं, स्यूडो-रैंडम। वे यादृच्छिक दिखाई देते हैं लेकिन नियतात्मक रूप से उत्पन्न होते हैं।

प्रश्न: रैंडम फ्लोटिंग-पॉइंट नंबर कैसे जनरेट करें? उत्तर: आवश्यकतानुसार random.NextDouble() और स्केल/शिफ्ट का उपयोग करें।

प्रश्न: क्रिप्टोग्राफिक रूप से सुरक्षित रैंडम नंबर के बारे में क्या? उत्तर: System.Security.Cryptography.RandomNumberGenerator का उपयोग करें।

प्रातिक्रिया दे

आपका ईमेल पता प्रकाशित नहीं किया जाएगा. आवश्यक फ़ील्ड चिह्नित हैं *