2010-07-01 28 views
5

मैं एक Mersenne ट्विस्टर जनरेटर वर्ग कि लेखक धागा सुरक्षित करता है, तो कहते हैं पाया एक धागा सुरक्षित यादृच्छिक जनरेटर के लिए खोज रहे:थ्रेड सुरक्षित Mersenne ट्विस्टर

http://www.umiacs.umd.edu/~yangcj/mtrnd.html

लेकिन कोड अध्ययन करने के बाद मैं नहीं थे देख सकते हैं कि यह सुरक्षित है धागा। वहां किसी लॉक वैरिएबल जैसा कोई भी प्रकार या कुछ भी नहीं है।

क्या यह कार्यान्वयन वास्तव में सुरक्षित है? यदि ऐसा है तो जादू क्या है?

उत्तर

1

यह इस अर्थ में थ्रेड-सुरक्षित प्रतीत होता है कि दो अलग-अलग मेर्सनविस्ट ऑब्जेक्ट्स का एक साथ उपयोग किया जा सकता है। आप एक ही ऑब्जेक्ट को लॉक से सुरक्षित किए बिना दो धागे में उपयोग नहीं कर सकते हैं।

मुझे लगता है कि मूल सी संस्करण लेखक प्रयुक्त वैश्विक या स्थैतिक चर के बारे में बात करता है, इसलिए यह एक सुधार है।

+0

मेरे आवेदन को सभी धागे के बीच यादृच्छिक लेकिन अद्वितीय संख्याएं उत्पन्न करने की आवश्यकता है। प्रति थ्रेड एक अलग मेर्सन ट्विस्ट ऑब्जेक्ट का उपयोग करके मैं जेनरेट की गई संख्या की विशिष्टता की गारंटी दे सकता हूं? – Horacio

+0

अद्वितीय संख्या उत्पन्न करना एक अलग सवाल है। इसके अलावा, आप एक ही अनुक्रम प्राप्त करेंगे जबतक कि आप प्रत्येक वस्तु को एक अलग बीज नहीं देते। – Amnon

+0

जब तक मैं एक ही मेर्सन ऑब्जेक्ट का उपयोग करता हूं तब तक मुझे अद्वितीय यादृच्छिक संख्या मिल जाएगी जब तक कि अनुक्रम सही न हो जाए? और मेर्सन ट्विस्टर के लिए चक्र लंबे समय के बाद दोहराता है, जो मेरे ऐप की आवश्यकता से कहीं बड़ा है, इसलिए मुझे लगता है कि मैं इस यादृच्छिक जनरेटर को अद्वितीय आईडी जनरेटर के रूप में भी उपयोग कर सकता हूं। अगर गलत है तो मुझे सही करें। – Horacio

6

एकाधिक स्ट्रीम मेर्सन ट्विस्टर में एक बहु-स्ट्रीम मेर्सन ट्विस्टर यादृच्छिक संख्या जेनरेटर बनाने और http://theo.phys.sci.hiroshima-u.ac.jp/~ishikawa/PRNG/mt_stream_en.html पर एक कार्यान्वयन (यानी, फोरट्रान 95 में स्रोत कोड) के बारे में एक चर्चा है। विधि मेरसेन ट्विस्टर अनुक्रम में बिंदुओं पर कई धाराएं शुरू करती है जो व्यापक रूप से अलग होती हैं, यह गारंटी देते हैं कि एकाधिक धाराएं एक-दूसरे से स्वतंत्र होती हैं और समान यादृच्छिक संख्या अनुक्रम उत्पन्न नहीं करती हैं। ताले के लिए कोई जरूरत नहीं है और इस प्रकार समानांतर कोड में संभावित बोतल गर्दन; अलग-अलग धाराओं को आईडी द्वारा एक्सेस किया जाता है।