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

रूबी में रैंडम नंबर्स और स्ट्रिंग्स में मास्टर करें: एक व्यावहारिक गाइड

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

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

एक रैंडम नंबर के साथ आप एक सरणी से एक रैंडम तत्व चुन सकते हैं, एक सूची से विजेता चुन सकते हैं, डाइस रोल उत्पन्न कर सकते हैं, आदि।

रूबी में, विभिन्न गुणों के साथ रैंडम नंबर्स उत्पन्न करने के कई तरीके हैं।

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

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

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

रूबी में रैंडमनेस उत्पन्न करने के अन्य तरीकों में शामिल हैं:

  • Array#shuffle विधि
  • Array#sample विधि
  • SecureRandom क्लास

आइए कुछ उदाहरणों पर चलते हैं!

रैंडम नंबर्स उत्पन्न करना

आप rand विधि का उपयोग करके रूबी रैंडम नंबर्स उत्पन्न कर सकते हैं:

रूबी में रैंडम नंबर्स और स्ट्रिंग्स में मास्टर करें: एक व्यावहारिक गाइड

Rand बिना किसी आर्गुमेंट्स के कॉल किए जाने पर फ्लोटिंग पॉइंट नंबर्स (0.4836732493) उत्पन्न करता है।

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

 rand 100 > 41 

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

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

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

उदाहरण:

 rand 200..500 > 352 

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

rand द्वारा उत्पन्न नंबर एक साधारण एप्लिकेशन के लिए पर्याप्त हो सकते हैं...

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

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

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

 require 'securerandom' SecureRandom.random_number > 0.232 

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

उदाहरण:

 SecureRandom.random_number(100) > 72 

SecureRandom के अन्य आउटपुट फॉर्मेट्स उपलब्ध हैं।

hex का उपयोग करके एक हेक्साडेसिमल फिक्स्ड-विड्थ स्ट्रिंग उत्पन्न कर सकते हैं।

 SecureRandom.hex > "87694e9e5231abca6de39c58cdfbe307" 

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

 SecureRandom.alphanumeric > "PSNVXOeDpnFikJPC" 

सरणियों से रैंडम तत्व कैसे चुनें

अब:

आप एक सूची से एक रैंडम पिक प्राप्त करना चाह सकते हैं।

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

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

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

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

आप sample का उपयोग रेंज के लिए कर सकते हैं, यह कोड एक रैंडम अक्षर उत्पन्न करता है:

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

आप N यूनिक तत्वों को सरणी से प्राप्त करने के लिए sample को एक पूर्णांक आर्गुमेंट पास कर सकते हैं:

 [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. - पायथन रैंडम नंबर कैसे जनरेट करता है?

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

  1. - वेटेड रैंडम नंबर जनरेशन में महारत: तकनीकें और अनुप्रयोग

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

  1. - रूबी में रैंडम नंबर जेनरेशन में महारत: तकनीकें और सर्वोत्तम अभ्यास

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