मैं सिमुलेशन के लिए boost mt19937 कार्यान्वयन का उपयोग कर रहा हूं।बूस्टर मेर्सन ट्विस्टर: एक से अधिक मूल्य के साथ बीज कैसे करें?
सिमुलेशन को पुनरुत्पादित करने की आवश्यकता है, और इसका मतलब है कि बाद में आरएनजी के बीज भंडारण और संभावित रूप से पुन: उपयोग करना। मैं बीज मूल्य उत्पन्न करने के लिए विंडोज क्रिप्टो एपीआई का उपयोग कर रहा हूं क्योंकि मुझे बीज के लिए बाहरी स्रोत की आवश्यकता है, न कि यादृच्छिकता की किसी भी विशेष गारंटी के कारण। किसी सिमुलेशन रन के आउटपुट में आरएनजी बीज सहित एक नोट होगा - इसलिए बीज को उचित रूप से छोटा होना चाहिए। दूसरी ओर, सिमुलेशन के विश्लेषण के हिस्से के रूप में, मैं कई रनों की तुलना करूँगा - लेकिन यह सुनिश्चित करने के लिए कि ये रन वास्तव में अलग हैं, मुझे अलग-अलग बीजों का उपयोग करने की आवश्यकता होगी - इसलिए बीज को लंबे समय तक होने की आवश्यकता है आकस्मिक टकराव से बचने के लिए पर्याप्त।
मैंने यह निर्धारित किया है कि बीजिंग के 64-बिट पर्याप्त होना चाहिए; टकराव का मौका लगभग 2^32 रनों के बाद 50% तक पहुंच जाएगा - यह संभावना कम है कि इसके कारण होने वाली औसत त्रुटि मेरे लिए नगण्य है। केवल 32-बिट बीज का उपयोग करना मुश्किल है; टकराव का मौका 2^16 रनों के बाद 50% तक पहुंच गया है; और यह मेरे स्वाद के लिए थोड़ा सा संभावना है।
दुर्भाग्यवश, बूस्ट कार्यान्वयन या तो पूर्ण राज्य वेक्टर के साथ बीज - जो बहुत दूर है, या एक 32-बिट हस्ताक्षरित लंबा - जो आदर्श नहीं है।
मैं 32-बिट्स से अधिक जनरेटर को कैसे बीज कर सकता हूं लेकिन पूर्ण राज्य वेक्टर से कम कैसे? मैंने राज्य वेक्टर को भरने के लिए वेक्टर को पैडिंग या बीज दोहराए जाने की कोशिश की, लेकिन परिणामों में एक सरसरी नज़र से पता चलता है कि इससे खराब नतीजे निकलते हैं।
आपको बस वर्तमान स्थिति मिलती है और इसे संशोधित करता है ... – kennytm
आपका टकराव गणित बिल्कुल सही नहीं है। उदाहरण के लिए, 64-बिट बीज के लिए, डुप्लिकेट की संभावना 7 =7163 के बाद = 0.5 है! = 65536 रन। – user168715
टक्कर गणित सिर्फ एक आसान अनुमान है - मुझे लगता है कि आप 32-बिट बीज का मतलब है, आकस्मिक रूप से, 64-बिट बीज नहीं? –