यदि आप रूबी में रैंडम नंबर्स और स्ट्रिंग्स उत्पन्न करना सीखना चाहते हैं, तो आप सही जगह पर हैं।
क्योंकि यह लेख ठीक उसी के बारे में है!
एक रैंडम नंबर के साथ आप एक सरणी से एक रैंडम तत्व चुन सकते हैं, एक सूची से विजेता चुन सकते हैं, डाइस रोल उत्पन्न कर सकते हैं, आदि।
रूबी में, विभिन्न गुणों के साथ रैंडम नंबर्स उत्पन्न करने के कई तरीके हैं।
उदाहरण के लिए...
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, आदि।
निष्कर्ष
बस! अब आप अपने रूबी प्रोग्राम्स में रैंडमनेस का उपयोग शुरू करने के लिए तैयार हैं 🙂
यह पोस्ट उपयोगी लगी?
इसे अपने दोस्तों के साथ शेयर करें और मेरे न्यूज़लेटर को सब्सक्राइब करें ताकि आप कुछ भी नया न चूकें!