यादृच्छिक संख्याएँ उत्पन्न करना

Ruby:
यादृच्छिक संख्याएँ उत्पन्न करना

कैसे:

Ruby कई तरीके प्रदान करता है यादृच्छिक संख्याएँ उत्पन्न करने के लिए, मुख्य रूप से Random क्लास के माध्यम से।

मूल यादृच्छिक संख्या

एक मूल यादृच्छिक संख्या उत्पन्न करने के लिए:

puts rand(10) # 0 और 9 के बीच एक यादृच्छिक संख्या उत्पन्न करता है

एक रेंज में यादृच्छिक संख्या

एक विशेष रेंज के भीतर एक यादृच्छिक संख्या के लिए:

puts rand(1..10) # 1 और 10 के बीच एक यादृच्छिक संख्या उत्पन्न करता है

Random क्लास का उपयोग करना

यादृच्छिक संख्याओं का एक पुनरावृत्ति सीक्वेंस बनाने के लिए, आप एक बीज के साथ Random क्लास का उपयोग कर सकते हैं।

random_generator = Random.new(1234)
puts random_generator.rand(100) # एक अनुमानित "यादृच्छिक" संख्या उत्पन्न करता है

एक यादृच्छिक ऐरे तत्व उत्पन्न करना

एक ऐरे से एक यादृच्छिक तत्व चुनें:

colors = ["red", "blue", "green", "yellow"]
puts colors.sample # ऐरे से यादृच्छिक रूप से एक तत्व का चयन करता है

नमूना आउटपुट:

ऊपर दिए गए प्रत्येक कोड स्निपेट, जब चलाया जाता है, अपने यादृच्छिक प्रकृति के कारण विभिन्न आउटपुट उत्पन्न करेगा। उदाहरण के लिए, rand(10) 7 आउटपुट कर सकता है, जबकि colors.sample "green" आउटपुट कर सकता है।

गहराई में जानकारी

कंप्यूटर विज्ञान में यादृच्छिक संख्याएँ उत्पन्न करने की संकल्पना विरोधाभासी है क्योंकि कंप्यूटर निश्चित निर्देशों का पालन करते हैं। प्रारम्भिक विधियों पर अप्रत्याशितता प्राप्त करने के लिए बाह्य इनपुट पर भारी निर्भरता थी। Ruby की यादृच्छिकता मर्सेन ट्विस्टर एल्गोरिथ्म पर आधारित है, विशाल अवधि और समान वितरण के लिए जाने जाते एक छद्म-यादृच्छिक संख्या जनरेटर, उच्च गुणवत्ता वाली यादृच्छिकता की आवश्यकता वाले अनुप्रयोगों के लिए अत्यधिक उपयुक्त बनाता है।

हालांकि Ruby की अंतर्निर्मित विधियाँ अधिकांश जरूरतों के लिए अच्छी तरह से काम करती हैं, वे सभी क्रिप्टोग्राफिक उद्देश्यों के लिए पर्याप्त नहीं हो सकती हैं, क्योंकि छद्म-यादृच्छिक संख्याओं की प्रेडिक्टेबिलिटी एक कमजोरी हो सकती है। क्रिप्टोग्राफिक सुरक्षा के लिए, Ruby डेवलपर्स OpenSSL::Random जैसी लाइब्रेरीज की खोज कर सकते हैं, जो क्रिप्टोग्राफिक रूप से सुरक्षित यादृच्छिक संख्याएँ उत्पन्न करने के लिए डिज़ाइन की गई हैं, संवेदनशील अनुप्रयोगों के लिए उच्चतर अप्रत्याशितता सुनिश्चित करती हैं।