पुनरावृत्तियों में सुसंगत यादृच्छिक संख्याओं को समझना
प्रदान किए गए कोड स्निपेट में, यह देखा गया है कि लूप पुनरावृत्ति के भीतर उत्पन्न यादृच्छिक संख्याएं सुसंगत रहती हैं। विशेष रूप से, 'कारसेटर' और 'निर्णायक' चर अद्वितीय मान उत्पन्न करने के उद्देश्य से लूप के बावजूद 15 पुनरावृत्तियों में समान मान बनाए रखते हैं।
यह व्यवहार लूप के भीतर srand(time(0)) की नियुक्ति के कारण उत्पन्न होता है . यह रैंड() पर बाद की कॉलों में लौटाए गए छद्म यादृच्छिक संख्याओं के अनुक्रम को निर्धारित करता है। समस्या इस तथ्य में निहित है कि समय (0) आमतौर पर लूप के निष्पादन के दौरान समान मान लौटाता है, जिससे यादृच्छिक संख्याओं की एक सुसंगत श्रृंखला उत्पन्न होती है।
इस समस्या को सुधारने और वास्तविक यादृच्छिकता सुनिश्चित करने के लिए, यह प्रारंभिक कॉल को लूप के बाहर srand(time(0)) पर ले जाना महत्वपूर्ण है। ऐसा करने से, आप यादृच्छिक संख्या जनरेटर को केवल एक बार आरंभ करते हैं, यह सुनिश्चित करते हुए कि यादृच्छिक संख्याओं का क्रम पुनरावृत्तियों में महत्वपूर्ण रूप से भिन्न होता है। निम्नलिखित कोड इस सुधार को प्रदर्शित करता है:
srand(time(0)); // Called once at the program's start for (int i = 0; iयह संशोधन लूप को प्रत्येक पुनरावृत्ति के साथ इच्छित यादृच्छिक संख्या उत्पन्न करने की अनुमति देता है। ध्यान दें कि लूप के भीतर srand() को कॉल करना अनावश्यक है क्योंकि छद्म यादृच्छिक संख्या जनरेटर अद्वितीय मान उत्पन्न करना जारी रखेगा जब तक कि आप इसे srand() पर किसी अन्य कॉल के साथ स्पष्ट रूप से रीसेट नहीं करते।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3