स्पष्ट होने के लिए: यादृच्छिक संख्या जनरेटर स्वयं इनपुट पैरामीटर और परिणामों सहित काफी कड़ाई से निर्दिष्ट किए जाते हैं। तकनीकी होने के लिए, निर्दिष्ट किया गया है कि 10000 वें डिफ़ॉल्ट-निर्मित जेनरेटर से परिणाम होता है, लेकिन किसी भी व्यावहारिक उद्देश्य के लिए एक जनरेटर से इस परिणाम पर एक मैच जो कि कम से कम उचित रूप से सही है, अन्यथा अनिवार्य रूप से गारंटी देता है कि जेनरेटर सही तरीके से काम कर रहा है, और इसके आउटपुट किसी दिए गए बीज के लिए कभी भी इसी तरह के जनरेटर से मेल खाते हैं।
उदाहरण के लिए, एक त्वरित परीक्षण:
#include <random>
#include <iostream>
int main() {
std::mt19937 r;
for (int i=0; i<10000-2; i++)
r();
for (int i=0; i<3; i++)
std::cout << r() << "\n";
}
... हर (हाल) संकलक के साथ समान परिणाम दिखाता है मैं अपने पास रखें:
1211010839
4123659995
725333953
उन तीन की दूसरी आवश्यक मूल्य है मानक द्वारा।
हालांकि वितरण वितरण में अधिक छूट दी जाती है। uniform_int_distribution
को समान रूप से आउटपुट में इनपुट मैप करना पड़ता है, लेकिन ऐसा करने के विभिन्न तरीके हैं, और इन तरीकों के उपयोग के बारे में कोई आवश्यकता नहीं है।
यदि आपको वास्तव में एक श्रेणी के भीतर पूर्णांक का अनुक्रम उत्पन्न करने की आवश्यकता है जो केवल समान रूप से वितरित नहीं है, लेकिन कार्यान्वयन के बीच संगत है, तो आपको शायद अपना वितरण कोड लागू करना होगा। यह अच्छी तरह से करना उतना ही छोटा नहीं है जितना कि ज्यादातर लोग शुरू में सोचते हैं। आप कुछ स्पष्टीकरण और परीक्षण कोड के साथ एक कार्य कार्यान्वयन के लिए मेरे previous answers में से एक को देखना चाह सकते हैं।
स्रोत
2015-09-23 18:07:48
आप समान मूल्यों का उत्पादन करने के लिए * यादृच्छिक संख्या पीढ़ी * के भिन्न कार्यान्वयन की अपेक्षा क्यों करते हैं? – lisyarus
समझाओ * क्या *? रनों के बीच एकता? या कार्यान्वयन के बीच असंगतता?एक ही बीज से विभिन्न छद्म-यादृच्छिक अनुक्रमों का उत्पादन करने के लिए विभिन्न कार्यान्वयन की अनुमति है। यह वही है जो आपने देखा था। – AnT
सटीक वही एल्गोरिदम उसी बीज को दिए गए समान मानों का उत्पादन करना चाहिए, है ना? आपके तर्क समझ में नहीं आता है। – user5368921