सी ++ रैंडम नंबर जेनरेटर
इंटरैक्टिव कोड उदाहरणों के साथ C++ में यादृच्छिक संख्याएँ उत्पन्न करने का तरीका जानें। विस्तृत स्पष्टीकरण के साथ rand(), srand(), <random> library, std::uniform_int_distribution, और std::mt19937 का अन्वेषण करें।
एक त्वरित यादृच्छिक संख्या की आवश्यकता है?
बिना कोई कोड लिखे तत्काल परिणाम के लिए हमारे ऑनलाइन यादृच्छिक संख्या जनरेटर का प्रयास करें।
सी ++ कोड संपादक
इंटरैक्टिव कोड उदाहरणों के साथ C++ में यादृच्छिक संख्याएँ उत्पन्न करने का तरीका जानें। विस्तृत स्पष्टीकरण के साथ rand(), srand(), <random> library, std::uniform_int_distribution, और std::mt19937 का अन्वेषण करें।
उत्पादन
सिम्युलेटेड आउटपुट (C++ सर्वर पर चलता है)
उदाहरण आउटपुट देखने के लिए "रन कोड" पर क्लिक करें
क्लासिक सी ++ रैंड के साथ ()
<cstdlib> यादृच्छिक पूर्णांक उत्पन्न करने के लिए पारंपरिक rand() फ़ंक्शन का उपयोग करें। सरल और व्यापक रूप से समर्थित, हालांकि खराब यादृच्छिकता गुणवत्ता के कारण क्रिप्टोग्राफ़िक अनुप्रयोगों के लिए उपयुक्त नहीं है।
C++ रैंडम नंबर जनरेशन को समझना
सी ++ यादृच्छिक संख्याओं को उत्पन्न करने के कई तरीके प्रदान करता है, जो सी में सरल रैंड () फ़ंक्शन से <random> सी ++ 11 में आधुनिक पुस्तकालय में विकसित होता है। क्लासिक रैंड () एक रैखिक सर्वांगसम जनरेटर (एलसीजी) का उपयोग करता है और इसे srand() के साथ वरीयता दी जाती है, जबकि आधुनिक दृष्टिकोण Mersenne ट्विस्टर एल्गोरिथ्म का उपयोग करता है और विभिन्न उपयोग के मामलों के लिए विभिन्न वितरण वर्ग प्रदान करता है।
rand() Function
क्लासिक रैंड () फ़ंक्शन <cstdlib> सरल छद्म-यादृच्छिक संख्या पीढ़ी प्रदान करता है। srand() के साथ वरीयता प्राप्त, यह एक रैखिक सर्वांगसम जेनरेटर (LCG) एल्गोरिथ्म का उपयोग करता है। बुनियादी अनुप्रयोगों के लिए उपयुक्त लेकिन क्रिप्टोग्राफ़िक उद्देश्यों के लिए नहीं।
<random> Library
<random> लाइब्रेरी (सी ++ 11+) std::mt19937 (Mersenne Twister), uniform_int_distribution जैसे विभिन्न वितरण, और रैंड () की तुलना में बेहतर यादृच्छिकता गुणवत्ता के साथ आधुनिक यादृच्छिक संख्या पीढ़ी प्रदान करती है।
uniform_int_distribution
std::uniform_int_distribution provides precise control over integer ranges with uniform distribution. Perfect for statistical applications, simulations, and when exact range control is needed.
std::mt19937
std::mt19937 implements the Mersenne Twister algorithm, providing excellent statistical properties and a very long period (2^19937-1). It is the default engine for most <random> distributions.
सामान्य उपयोग के मामले
गेमिंग और सिमुलेशन
यादृच्छिक पासा रोल, कार्ड ड्रॉ, प्रक्रियात्मक पीढ़ी, और <random> खेल के छोरों और सिमुलेशन में रैंड () या आधुनिक पुस्तकालय का उपयोग करके खेल घटनाओं उत्पन्न करें।
सुरक्षा और क्रिप्टोग्राफी
सुरक्षा अनुप्रयोगों के लिए, विशेष क्रिप्टोग्राफ़िक पुस्तकालयों का उपयोग करने पर विचार करें। मानक रैंड () क्रिप्टोग्राफिक रूप से सुरक्षित नहीं है। पासवर्ड और टोकन के लिए प्लेटफ़ॉर्म-विशिष्ट सुरक्षित यादृच्छिक संख्या जनरेटर का उपयोग करें।
उच्च प्रदर्शन कंप्यूटिंग
<random> std::mt19937 के साथ आधुनिक पुस्तकालय HPC और वैज्ञानिक कंप्यूटिंग अनुप्रयोगों में बड़ी मात्रा में यादृच्छिक संख्या उत्पन्न करने के लिए उत्कृष्ट प्रदर्शन प्रदान करता है।
सॉफ्टवेयर परीक्षण
C++ अनुप्रयोगों में मजबूत कोड कवरेज और बग का पता लगाने को सुनिश्चित करने के लिए यादृच्छिक परीक्षण डेटा, फ़ज़ परीक्षण इनपुट और किनारे के मामले बनाएं।
सी ++ रैंडम नंबर जनरेशन कैसे काम करता है
सी ++ का क्लासिक <कोड क्लास = "बीजी-ग्रे-100 पीएक्स -2 पीवाई -1 राउंड">रैंड () फ़ंक्शन (से
आधुनिक <कोड क्लास = "bg-gray-100 px-2 py-1 rounded">
std::random_device यादृच्छिक संख्या इंजनों को सीडिंग करने के लिए एन्ट्रापी का एक प्लेटफ़ॉर्म-विशिष्ट स्रोत प्रदान करता है, जिससे हर बार प्रोग्राम चलने पर अलग-अलग अनुक्रम सुनिश्चित होते हैं।
C++ रैंडम जनरेशन के लिए विशेषज्ञ युक्तियाँ
नए कोड के लिए rand() से बचें
नए C++ कोड (C++11 और बाद के संस्करण) के लिए,
हमेशा बीज srand()
यदि रैंड () का उपयोग कर रहे हैं, तो जनरेटर को बीज देना शुरू करने के लिए प्रोग्राम में हमेशा srand(std::time(0)) को कॉल करें। अन्यथा, आपको हर बार एक ही क्रम मिलेगा। के साथ
उचित वितरण का उपयोग करें
समान पूर्णांक श्रेणियों के लिए, std::uniform_int_distribution का उपयोग करें। फ़्लोटिंग-पॉइंट नंबरों के लिए, std::uniform_real_distribution का उपयोग करें। यह उचित सांख्यिकीय गुण सुनिश्चित करता है।
तकनीकी निर्देश
एल्गोरिदम
- रैखिक सर्वांगसम जेनरेटर (रैंड फ़ंक्शन)
- मर्सेन ट्विस्टर (std::mt19937)
- प्लेटफ़ॉर्म-विशिष्ट एन्ट्रापी स्रोत (std::random_device)
प्रदर्शन गुण
- रैंड (): तेज लेकिन खराब यादृच्छिकता गुणवत्ता
- <random>: उत्कृष्ट गुणवत्ता के साथ तेजी से
- std::mt19937: Very fast for large quantities