मुझे यह निर्धारित करने में समस्या हो रही है कि मेर्सन ट्विस्टर सी ++ 11 का कौन सा संस्करण प्रदान करता है। Mersenne twister: A 623 Dimensionally Equidistributed Uniform Pseudorandom Number Generator पर मात्सुमोतो और Nishimura एसीएम कागज को देखते हुए, लेखकों एल्गोरिथ्म, एल्गोरिथ्म के एक कार्यान्वयन प्रदान करते हैं और यह MT19937
कहते हैं।कौन सा मेर्सन ट्विस्टर सी ++ 11 प्रदान करता है?
हालांकि, जब मैं नीचे दिए गए छोटे कार्यक्रम के साथ सी ++ 11 के समान नामित जेनरेटर का परीक्षण करता हूं, तो मैं मत्सुमोतो और निशिमुरा के MT19937 द्वारा बनाई गई स्ट्रीम को पुन: उत्पन्न नहीं कर सकता। धाराएं उत्पादित पहले 32-बिट शब्द से भिन्न होती हैं।
कौन सा मेर्सन ट्विस्टर सी ++ 11 प्रदान करता है?
नीचे कार्यक्रम जीसीसी, -std=c++11
और GNU के stdlibc++
का उपयोग कर फेडोरा 22 पर चलाया गया था।
std::mt19937 prng(102013);
for (unsigned int i = 0; i <= 625; i++)
{
cout << std::hex << prng();
if(i+1 != 625)
cout << ",";
if(i && i%8 == 0)
cout << endl;
}
यदि आप बूस्ट में [हेडर] (http://www.boost.org/doc/libs/release/boost/roc/lerssne_twister.hpp) देखते हैं। यादृच्छिक, वे बताते हैं * एक पूर्णांक से बीजिंग था अप्रैल 2005 में एक [कमजोरी] को संबोधित करने के लिए बदल दिया गया (http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/MT2002/emt19937ar.html) *।क्या यह हो सकता है कि आप उस परिवर्तन से पहले प्रकाशित एक पेपर से परिणामों की तुलना कर रहे हैं? – Praetorian
@Praetorian - ठीक है, मुझे यकीन नहीं है, लेकिन मुझे विश्वास नहीं है। मैं बूस्ट का उपयोग नहीं कर रहा हूँ; बल्कि, मैं 'libstdC++' के माध्यम से जीएनयू के कार्यान्वयन का उपयोग कर रहा हूं। – jww
यह http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/MT2002/CODES/mt19937ar.c का उपयोग करता है। IOW, क्या @Praetorian से जुड़ा हुआ है। –