जब आप कहते हैं कि "यादृच्छिक संख्या का उसी क्रम उत्पन्न करने के लिए की जरूरत है" क्या आपका मतलब है कि
- प्रत्येक धागा अन्य धागा करने के लिए समान संख्या की एक धारा उत्पन्न करने के लिए की जरूरत है करते हैं? यह, धागे बंद छीलने से पहले बीज को चुनने का मतलब तो वही बीज के साथ एक सूत्र में एक धागे की स्थानीय PRNG instantiating।
या
- आप कार्यक्रमों के विभिन्न रन के बीच संख्या के उसी क्रम को दोहराने के लिए सक्षम होना चाहते हैं, लेकिन प्रत्येक धागा यह अपनी स्वतंत्र अनुक्रम है उत्पन्न करता है? इस मामले में, आप अभी भी एक पीआरएनजी साझा नहीं कर सकते हैं क्योंकि थ्रेड ऑपरेशन अनुक्रम गैर-निर्धारक है। तो थ्रेड लॉन्च करने से पहले एक ज्ञात बीज के साथ एक एकल पीआरएनजी बीज करें, और धागे के लिए शुरुआती बीज उत्पन्न करने के लिए इसका इस्तेमाल करें। फिर आप प्रत्येक धागे में थ्रेड-स्थानीय जेनरेटर को तत्काल बनाते हैं ...
इन मामलों तुम क्या Neil Butterworth आँकड़ों के बारे में कहते हैं कि नोट करना चाहिए में से प्रत्येक में: सामान्य गारंटी देता है कि PRNG पर दावा करना चाहते का सबसे विश्वसनीय नहीं जब मिश्रण धाराओं इस तरह से उत्पन्न कर रहे हैं।
दोनों मामलों में आपको थ्रेड-स्थानीय पीआरएनजी की आवश्यकता है। मुझे नहीं पता कि f90 में क्या उपलब्ध है ... लेकिन आप स्वयं भी लिख सकते हैं (लुकअप Mersenne Twister, और एक राउटन लिखें जो सहेजे गए राज्य को पैरामीटर के रूप में लेता है ...)।
fortran 77 में, इस तरह
function PRNGthread (state)
double state(statesize)
c stuff happens here which uses and manipulates the state vector...
PRNGthread = result
return
और अपने सूत्र एक अलग राज्य वेक्टर बनाए रखना चाहिए में से प्रत्येक के कुछ ऐसा दिखाई देगा, हालांकि सभी एक ही प्रारंभिक मूल्य का प्रयोग करेंगे।
@Eric: अच्छा पुनर्लेखन। – dmckee
एप्लिकेशन समानांतर कैसे है? यदि आप एमपीआई जैसे कुछ उपयोग कर रहे हैं तो आप इसे अलग तरीके से संभाल सकते हैं। –
अब तक इसे ओपनएमपी का उपयोग करके समानांतर किया गया है लेकिन निकट भविष्य में, मैं एमपीआई – Bellman