प्रोग्रामिंग में यादृच्छिक संख्याएँ उत्पन्न करना एक सामान्य कार्य है, और C# इसे प्राप्त करने के लिए मज़बूत उपकरण प्रदान करता है। यह लेख System.Random
क्लास, इसकी कार्यक्षमताओं और यादृच्छिक पूर्णांकों को उत्पन्न करने के सर्वोत्तम अभ्यासों का पता लगाता है।
विषय-सूची
Random
क्लास को समझना- यादृच्छिक पूर्णांक उत्पन्न करना
- यादृच्छिक संख्या जनरेटर को सीड करना
- क्रिप्टोग्राफिक रूप से सुरक्षित यादृच्छिक संख्याएँ
- निष्कर्ष
- अक्सर पूछे जाने वाले प्रश्न (FAQ)
Random
क्लास को समझना
C# में System.Random
क्लास का उपयोग छद्म-यादृच्छिक संख्याएँ उत्पन्न करने के लिए किया जाता है। यह याद रखना महत्वपूर्ण है कि ये संख्याएँ वास्तव में यादृच्छिक नहीं हैं; वे एक नियतात्मक एल्गोरिथम का उपयोग करके उत्पन्न होती हैं। इसका मतलब है कि समान प्रारंभिक स्थिति (सीड) को देखते हुए, संख्याओं का क्रम समान होगा। हालाँकि, कई अनुप्रयोगों के लिए, System.Random
द्वारा प्रदान की जाने वाली छद्म-यादृच्छिकता पर्याप्त है।
यादृच्छिक पूर्णांक उत्पन्न करना
यादृच्छिक पूर्णांक उत्पन्न करने का प्राथमिक तरीका Next()
है। यह विधि कई अतिभार प्रदान करती है:
Next()
:int.MaxValue
से कम एक गैर-ऋणात्मक यादृच्छिक पूर्णांक देता है।Next(maxValue)
: निर्दिष्टmaxValue
(maxValue
धनात्मक होना चाहिए) से कम एक गैर-ऋणात्मक यादृच्छिक पूर्णांक देता है।Next(minValue, maxValue)
: समावेशी श्रेणी [minValue
,maxValue
) (maxValue
minValue
से अधिक होना चाहिए) के भीतर एक यादृच्छिक पूर्णांक देता है।
using System;
public class RandomIntExample
{
public static void Main(string[] args)
{
Random random = new Random();
int randomNumber1 = random.Next(); // 0 to int.MaxValue - 1
Console.WriteLine($"Random number 1: {randomNumber1}");
int randomNumber2 = random.Next(10); // 0 to 9
Console.WriteLine($"Random number 2: {randomNumber2}");
int randomNumber3 = random.Next(10, 21); // 10 to 20
Console.WriteLine($"Random number 3: {randomNumber3}");
}
}
यादृच्छिक संख्या जनरेटर को सीड करना
सीड मान Random
क्लास की आंतरिक स्थिति को आरंभ करता है। समान सीड का उपयोग करने से हमेशा संख्याओं का समान क्रम उत्पन्न होगा। यदि कोई सीड प्रदान नहीं किया जाता है, तो सिस्टम क्लॉक का उपयोग किया जाता है, जिसके परिणामस्वरूप एप्लिकेशन के प्रत्येक बार चलने पर एक अलग क्रम प्राप्त होता है। यह आम तौर पर अधिकांश अनुप्रयोगों के लिए बेहतर होता है।
using System;
public class SeededRandomExample
{
public static void Main(string[] args)
{
Random random1 = new Random(12345);
int number1 = random1.Next(1, 101);
Console.WriteLine($"Random number with seed 12345: {number1}");
Random random2 = new Random(12345);
int number2 = random2.Next(1, 101); // Same as number1
Console.WriteLine($"Random number with seed 12345: {number2}");
Random random3 = new Random(); // Uses system time
int number3 = random3.Next(1, 101); // Different number
Console.WriteLine($"Random number with system time seed: {number3}");
}
}
सीड सेट करना परीक्षण और परिणामों को दोहराने योग्य बनाने की आवश्यकता वाले परिदृश्यों के लिए उपयोगी है।
क्रिप्टोग्राफिक रूप से सुरक्षित यादृच्छिक संख्याएँ
क्रिप्टोग्राफिक रूप से सुरक्षित यादृच्छिक संख्याओं की आवश्यकता वाले अनुप्रयोगों (जैसे, सुरक्षा-संवेदनशील अनुप्रयोग) के लिए, System.Random
अपर्याप्त है। इसके बजाय, System.Security.Cryptography
नामस्थान, विशेष रूप से RNGCryptoServiceProvider
क्लास का उपयोग करें।
निष्कर्ष
System.Random
क्लास C# में छद्म-यादृच्छिक पूर्णांक उत्पन्न करने का एक सरल और कुशल तरीका प्रदान करता है। सीड की भूमिका और विभिन्न Next()
अतिभारों को समझने से लचीला और नियंत्रित यादृच्छिक संख्या निर्माण संभव होता है। सुरक्षा-संवेदनशील अनुप्रयोगों के लिए, हमेशा क्रिप्टोग्राफिक रूप से सुरक्षित यादृच्छिक संख्या जनरेटर चुनें।
अक्सर पूछे जाने वाले प्रश्न (FAQ)
- प्रश्न: क्या संख्याएँ वास्तव में यादृच्छिक हैं? उत्तर: नहीं, वे छद्म-यादृच्छिक हैं।
- प्रश्न: किसी विशिष्ट श्रेणी के भीतर यादृच्छिक संख्याएँ कैसे उत्पन्न करें? उत्तर:
Next(minValue, maxValue)
का उपयोग करें। - प्रश्न: सीड क्यों सेट करें? उत्तर: दोहराने योग्य परिणामों के लिए।
- प्रश्न: क्रिप्टोग्राफिक रूप से सुरक्षित यादृच्छिक संख्याओं के बारे में क्या? उत्तर:
RNGCryptoServiceProvider
का उपयोग करें। - प्रश्न: अन्य डेटा प्रकार? उत्तर:
Random
क्लास अन्य प्रकारों (डबल्स, आदि) को उत्पन्न करने के लिए विधियाँ प्रदान करता है, या आप पूर्णांक परिणामों पर परिवर्तन कर सकते हैं।