सी ++ रैंडम नंबर जेनरेटर

इंटरैक्टिव कोड उदाहरणों के साथ 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 राउंड">रैंड () फ़ंक्शन (से) एक रैखिक सर्वांगसम जेनरेटर (एलसीजी) एल्गोरिथ्म का उपयोग करता है। यह सूत्र का उपयोग करके छद्म-यादृच्छिक संख्याओं का उत्पादन करता है: <कोड वर्ग = "बीजी-ग्रे-100 पीएक्स -2 पीवाई -1 राउंडेड">अगला = (ए * वर्तमान + सी) % एम। अनुक्रम नियतात्मक है और इसे <कोड वर्ग = "bg-gray-100 px-2 py-1 rounded">srand() के साथ वरीयता दी जानी चाहिए।

आधुनिक <कोड क्लास = "bg-gray-100 px-2 py-1 rounded"> लाइब्रेरी (C++11+) Mersenne ट्विस्टर एल्गोरिथ्म (std::mt19937) का उपयोग करती है, जो बहुत बेहतर यादृच्छिकता गुणवत्ता और सांख्यिकीय गुण प्रदान करती है। यह विभिन्न उपयोग के मामलों के लिए uniform_int_distribution, normal_distribution और bernoulli_distribution जैसे विभिन्न वितरण वर्ग भी प्रदान करता है।

std::random_device यादृच्छिक संख्या इंजनों को सीडिंग करने के लिए एन्ट्रापी का एक प्लेटफ़ॉर्म-विशिष्ट स्रोत प्रदान करता है, जिससे हर बार प्रोग्राम चलने पर अलग-अलग अनुक्रम सुनिश्चित होते हैं।

C++ रैंडम जनरेशन के लिए विशेषज्ञ युक्तियाँ

🎯

नए कोड के लिए rand() से बचें

नए C++ कोड (C++11 और बाद के संस्करण) के लिए, rand()/srand() पर लाइब्रेरी को प्राथमिकता दें। यह बेहतर यादृच्छिकता, अधिक लचीलापन और थ्रेड-सुरक्षित संचालन प्रदान करता है।

🔒

हमेशा बीज 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