Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Ruby

रूबी में रैंडम नंबर और स्ट्रिंग्स कैसे जेनरेट करें?

अगर आप रूबी में रैंडम नंबर और स्ट्रिंग जेनरेट करना सीखना चाहते हैं, तो आप सही जगह पर हैं।

क्योंकि यह लेख इसी के बारे में है!

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

रूबी में, विभिन्न गुणों के साथ यादृच्छिक संख्याएँ उत्पन्न करने के कई तरीके हैं।

उदाहरण के लिए…

रैंड विधि का उपयोग 3 तरीकों से किया जा सकता है:

  • बिना तर्क के, rand आपको एक फ्लोटिंग पॉइंट देता है 0 और 1 के बीच की संख्या (जैसे 0.4836732493)
  • एक पूर्णांक . के साथ तर्क (rand(10) ) आपको 0 और उस संख्या के बीच एक नया पूर्णांक मिलता है
  • एक श्रेणी . के साथ तर्क (rand(1..20) ) आपको श्रेणी की शुरुआत और सीमा के अंत के बीच एक पूर्णांक मिलता है

रूबी में यादृच्छिकता उत्पन्न करने के अन्य तरीकों में शामिल हैं:

  • सरणी#शफल विधि
  • सरणी#नमूना विधि
  • सुरक्षित रैंडम कक्षा

आइए कुछ उदाहरण देखें!

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

आप रैंड . का उपयोग करके रूबी यादृच्छिक संख्याएं उत्पन्न कर सकते हैं विधि:

रूबी में रैंडम नंबर और स्ट्रिंग्स कैसे जेनरेट करें?

रैंड फ़्लोटिंग पॉइंट नंबर उत्पन्न करता है (0.4836732493 ) अगर बिना किसी तर्क के बुलाया जाता है।

आप rand . को तर्क दे सकते हैं शून्य से शुरू होकर (लेकिन शामिल नहीं . तक की संख्या उत्पन्न करने के लिए ) वह नंबर।

rand 100
> 41

रूबी यादृच्छिक संख्या पीढ़ी वास्तव में आसान है, लेकिन क्या होगा यदि आपको शून्य से शुरू करने के बजाय किसी विशिष्ट श्रेणी में संख्या की आवश्यकता है?

कोई समस्या नहीं!

आप जो चाहते हैं उसे प्राप्त करने के लिए आप एक श्रेणी का उपयोग कर सकते हैं।

उदाहरण :

rand 200..500
> 352

सुरक्षित रूबी रैंडम नंबर

रैंड द्वारा उत्पादित संख्या एक साधारण अनुप्रयोग के लिए पर्याप्त हो सकती है…

...लेकिन अगर आप उनका उपयोग सुरक्षा उद्देश्यों के लिए करना चाहते हैं—जैसे पासवर्ड रीसेट टोकन जेनरेट करना—तो आपको SecureRandom का उपयोग करना चाहिए , जो रूबी मानक पुस्तकालय का हिस्सा है।

SecureRandom अपने जनरेटर को /dev/urandom से यूनिक्स सिस्टम पर और विंडोज़ पर CryptAcquireContext / CryptGenRandom API का उपयोग करता है।

यहां एक उदाहरण दिया गया है :

require 'securerandom'

SecureRandom.random_number
> 0.232
की आवश्यकता है

जैसा कि आप देख सकते हैं कि यह rand की तरह बहुत काम करता है , आप अधिकतम संख्या में भी पास कर सकते हैं।

उदाहरण :

SecureRandom.random_number(100)
> 72

रैंडम सुरक्षित करें अन्य आउटपुट स्वरूप उपलब्ध हैं।

hex का उपयोग करना एक हेक्साडेसिमल निश्चित-चौड़ाई वाली स्ट्रिंग उत्पन्न कर सकता है।

SecureRandom.hex
> "87694e9e5231abca6de39c58cdfbe307"

रूबी 2.5 ने एक नई विधि पेश की, जो यादृच्छिक अल्फ़ान्यूमेरिक स्ट्रिंग्स उत्पन्न करती है:

SecureRandom.alphanumeric
> "PSNVXOeDpnFikJPC"

सरणी से यादृच्छिक तत्व कैसे चुनें

अब:

हो सकता है कि आप किसी सूची से यादृच्छिक चयन प्राप्त करना चाहें

आप इसे आजमा सकते हैं:

[5, 15, 30, 60].shuffle.first
> 30

लेकिन रूबी के पास नमूना . है विधि जो इस कार्य के लिए बेहतर अनुकूल (और तेज़) है:

[5, 15, 30, 60].sample
> 5

आप नमूना . का उपयोग कर सकते हैं श्रेणियों के लिए, यह कोड एक यादृच्छिक अक्षर उत्पन्न करता है:

('a'..'z').to_a.sample
> b

N अद्वितीय तत्व . प्राप्त करने के लिए आप नमूना के लिए एक पूर्णांक तर्क पारित कर सकते हैं सरणी से:

[1,2,3].sample(2)
> [1, 2]

कस्टम यादृच्छिक जनरेटर को तर्क के रूप में पारित करना भी संभव है:

[1,2,3].sample(random: SecureRandom)

रूबी रैंडम स्ट्रिंग्स

अंतिम यादृच्छिकता अनुप्रयोग एक कस्टम वर्ण सेट के साथ एक यादृच्छिक स्ट्रिंग उत्पन्न करना है। यहाँ कोड है:

def generate_code(number)
  charset = Array('A'..'Z') + Array('a'..'z')
  Array.new(number) { charset.sample }.join
end

puts generate_code(20)

यहाँ कुछ चीज़ें चल रही हैं।

सबसे पहले, हम श्रेणियों का उपयोग करके और उन्हें सरणियों में परिवर्तित करके अपना वर्णसेट तैयार करते हैं। फिर हम Array.new . पर कॉल करने का लाभ उठाते हैं एक ब्लॉक के साथ, जो हमें आकार n की सरणी . को प्रारंभ करने देता है ब्लॉक द्वारा उत्पादित मूल्यों के साथ।

यह कोड निम्न फ़ॉर्म के तार तैयार करेगा: TufwGfXZskHlPcYrLNKg

आप अपनी ज़रूरतों के अनुसार सेट किए गए चरित्र में बदलाव कर सकते हैं।

रैंडम नंबर जेनरेटर को सीडिंग करना

यदि आप नियंत्रित करना चाहते हैं कि rand . जैसी विधि का उपयोग करते समय कौन सी संख्याएं उत्पन्न होती हैं तो आप बीज सेट कर सकते हैं।

बीज क्या है?

बीज एक संख्या है जो यादृच्छिक संख्याओं का एक क्रम शुरू करती है।

सभी जेनरेट की गई संख्याएं इस बीज से ली गई हैं

यही कारण है कि बीज की गुणवत्ता आमतौर पर यादृच्छिक संख्याओं का एक अच्छा क्रम तैयार करने की कुंजी होती है।

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

आप इसे srand . के साथ कर सकते हैं विधि।

इसे पसंद करें :

Kernel.srand(1)

इस बीज से आपको पता चल जाएगा कि जनरेटर आपको कौन से नंबर देगा।

नंबर 1 के लिए बीज के रूप में :

Array.new(5) { rand(1..10) }
# [6, 9, 10, 6, 1]

अगर आप बीज को फिर से 1 पर सेट करते हैं, तो क्रम 6 से शुरू होगा, फिर 9, 10, आदि।

निष्कर्ष

इतना ही! अब आप अपने रूबी कार्यक्रमों में यादृच्छिकता का उपयोग शुरू करने के लिए तैयार हैं 🙂

क्या यह पोस्ट उपयोगी लगी?

इसे अपने मित्रों के साथ साझा करें और मेरे न्यूज़लेटर की सदस्यता लें ताकि आप कुछ भी नया न छोड़ें!


  1. पायथन यादृच्छिक संख्या कैसे उत्पन्न करता है?

    पायथन के मानक वितरण में एक यादृच्छिक मॉड्यूल है जिसमें यादृच्छिक संख्या पीढ़ी के लिए कार्य हैं। बेसिक रैंडम () फ़ंक्शन 0 और 1 के बीच एक रैंडम फ्लोटिंग पॉइंट नंबर देता है >>> import random >>> random.random() 0.5204702770265925 उसी मॉड्यूल से, randrange() फ़ंक्शन होता है जो अनुक्रमि

  1. भारित यादृच्छिक संख्याएँ कैसे उत्पन्न करें

    रैंडम नंबर आमतौर पर उसी का अनुसरण करते हैं जिसे हम यूनिफ़ॉर्म डिस्ट्रीब्यूशन कहते हैं, जिसका अर्थ है कि एक ही मौका है कि किसी भी नंबर को चुना जाए। लेकिन अगर आप चाहते हैं कि कुछ नंबर दूसरों की तुलना में अधिक बार चुने जाएं तो आपको एक अलग रणनीति की आवश्यकता होगी:एक भारित यादृच्छिक संख्या जनरेटर । कुछ

  1. रूबी में रैंडम नंबर जेनरेट करना

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