खोज…


परिचय

रैंड के पास रैंड क्रेट के जरिए रैंडम नंबर जेनरेशन प्रदान करने की क्षमता है। एक बार रस्ट मानक पुस्तकालय का हिस्सा होने के बाद, रैंड क्रेट की कार्यक्षमता को इसके विकास को बाकी रस्ट परियोजना के लिए अलग करने की अनुमति देने के लिए अलग किया गया था। यह विषय कवर करेगा कि कैसे केवल रैंड क्रेट को जोड़ा जाए, फिर रस्ट में एक रैंडम नंबर जेनरेट और आउटपुट किया जाए।

टिप्पणियों

थ्रेड-स्थानीय भंडारण में संग्रहीत प्रत्येक थ्रेड से जुड़े एक आरएनजी के लिए अंतर्निहित समर्थन है। इस RNG को thread_rng माध्यम से एक्सेस किया जा सकता है, या random रूप से उपयोग किया जा सकता है। यह आरएनजी सामान्य रूप से यादृच्छिकता के ऑपरेटिंग-सिस्टम स्रोत, जैसे /dev/urandom डिक्स / यूरीज़ैम पर यूनिक्स प्रणालियों से यादृच्छिक रूप से वरीयता प्राप्त होती है, और स्वचालित रूप से 32 केबी के यादृच्छिक डेटा उत्पन्न करने के बाद स्वचालित रूप से इस स्रोत से फिर से शुरू हो जाएगी।

एक एप्लिकेशन जिसे क्रिप्टोग्राफ़िक उद्देश्यों के लिए एक एंट्रोपी स्रोत की आवश्यकता होती है, उसे OsRng उपयोग करना चाहिए, जो उस स्रोत से यादृच्छिकता पढ़ता है जो ऑपरेटिंग सिस्टम प्रदान करता है (उदाहरण के लिए /dev/urandom यूनिक्स या CryptGenRandom() विंडोज पर)। इस मॉड्यूल द्वारा प्रदान किए गए अन्य यादृच्छिक संख्या जनरेटर ऐसे उद्देश्यों के लिए उपयुक्त नहीं हैं।

रैंड के साथ दो रैंडम नंबर जनरेट करना

सबसे पहले, आपको एक निर्भरता के रूप में टोकरा को अपनी Cargo.toml फ़ाइल में जोड़ना होगा।

[dependencies]
rand = "0.3"

यह crates.io से rand क्रेट को पुनः प्राप्त करेगा। इसके बाद, इसे अपने टोकरे की जड़ में जोड़ें।

extern crate rand;

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

use rand::Rng;

fn main() {
    
    let mut rng = rand::thread_rng();
    
    if rng.gen() { // random bool
        println!("i32: {}, u32: {}", rng.gen::<i32>(), rng.gen::<u32>())
    }
}

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

$ cargo run
     Running `target/debug/so`
i32: 1568599182, u32: 2222135793

रैंड के साथ वर्ण उत्पन्न करना

वर्ण उत्पन्न करने के लिए, आप थ्रेड-लोकल रैंडम नंबर जनरेटर फंक्शन, random का उपयोग कर सकते हैं।

fn main() {
    let tuple = rand::random::<(f64, char)>();
    println!("{:?}", tuple)
}

सामयिक या विलक्षण अनुरोधों के लिए, जैसे कि ऊपर दिया गया, यह एक उचित कुशल तरीका है। हालाँकि, यदि आप एक से अधिक संख्याएँ उत्पन्न करना चाहते हैं, तो आप पाएंगे कि कैशिंग जनरेटर अधिक कुशल होगा।

आपको इस मामले में निम्नलिखित आउटपुट देखने की उम्मीद करनी चाहिए।

$ cargo run
     Running `target/debug/so`
(0.906881, '\u{9edc}')


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow