समानांतर छद्म आयामी संख्या जनरेटर


20

यह प्रश्न मुख्य रूप से एक व्यावहारिक सॉफ्टवेयर-इंजीनियरिंग समस्या से संबंधित है, लेकिन मुझे यह सुनने के लिए उत्सुक होना होगा कि क्या सिद्धांतकार इसमें अधिक जानकारी प्रदान कर सकते हैं।


सीधे शब्दों में कहें, मेरे पास एक मोंटे कार्लो सिमुलेशन है जो एक छद्म आयामी संख्या जनरेटर का उपयोग करता है, और मैं इसे समानांतर करना चाहूंगा ताकि समानांतर में एक ही सिमुलेशन चलाने वाले 1000 कंप्यूटर हों। इसलिए मुझे छद्म आयामी संख्या के 1000 स्वतंत्र धाराओं की आवश्यकता है।

क्या हमारे पास निम्नलिखित गुणों के साथ 1000 समानांतर धाराएं हो सकती हैं? यहां को सभी प्रकार के अच्छे सैद्धांतिक और अनुभवजन्य गुणों के साथ एक बहुत प्रसिद्ध और व्यापक रूप से अध्ययन किया जाने वाला PRNG होना चाहिए।X

  1. धाराएं काफी अच्छी हैं क्योंकि मुझे बस उपयोग करने और एक्स द्वारा उत्पन्न धारा को 1000 धाराओं में विभाजित करने पर मुझे क्या मिलेगा ।XX

  2. किसी भी स्ट्रीम में अगला नंबर जेनरेट करना (लगभग) साथ अगला नंबर जेनरेट करना जितना तेज़ है ।X

अन्यथा डालें: क्या हम "स्वतंत्र" के लिए कई स्वतंत्र स्ट्रीम प्राप्त कर सकते हैं?

बेशक, अगर हम केवल उपयोग करते हैं , तो हमेशा 999 नंबर को छोड़ना और 1 को चुनना, तो हमारे पास निश्चित रूप से संपत्ति 1 होगी, लेकिन हम चल रहे समय में फैक्टर 1000 से हार जाएंगे।X

एक सरल विचार की 1000 प्रतियों का उपयोग बीज 1, 2, ..., 1000 के साथ करना होगा। यह निश्चित रूप से तेज होगा, लेकिन यह स्पष्ट नहीं है कि धाराओं में अच्छे सांख्यिकीय गुण हैं या नहीं।X


कुछ Googling के बाद, मैंने पाया है, उदाहरण के लिए, निम्नलिखित:

  • SPRNG पुस्तकालय वास्तव में इस प्रयोजन के लिए डिजाइन किया जा रहा है, और यह समर्थन करता है, कई PRNGs

  • Mersenne ट्विस्टर आजकल एक लोकप्रिय PRNG प्रतीत हो रहा है, और मुझे एक वेरिएंट के कुछ संदर्भ मिले जो समानांतर में कई धाराओं का उत्पादन करने में सक्षम है।

लेकिन यह सब मेरे अपने अनुसंधान क्षेत्रों से इतना दूर है, कि मैं यह पता नहीं लगा सका कि वास्तव में अत्याधुनिक क्या है, और कौन से निर्माण न केवल सिद्धांत में, बल्कि व्यवहार में भी अच्छी तरह से काम करते हैं।


कुछ स्पष्टीकरण: मुझे किसी भी प्रकार के क्रिप्टोग्राफिक गुणों की आवश्यकता नहीं है; यह वैज्ञानिक गणना के लिए है। मुझे अरबों यादृच्छिक संख्याओं की आवश्यकता होगी, इसलिए हम की अवधि के साथ किसी भी जनरेटर को भूल सकते हैं ।<232

संपादित करें: मैं एक सच्चे RNG का उपयोग नहीं कर सकता; मुझे एक निर्धारित पीआरएनजी की जरूरत है। सबसे पहले, यह डिबगिंग के साथ बहुत मदद करता है और सब कुछ दोहराता है। दूसरे, यह मुझे ऐसा करने की अनुमति देता है, उदाहरण के लिए, इस तथ्य का फायदा उठाते हुए कि यह बहुत ही कुशलता से है कि मैं मल्टी-पास मॉडल का उपयोग कर सकता हूं ( यह प्रश्न देखें )।

संपादन 2: एक निकट संबंधी प्रश्न है @ StackOverflow: क्लस्टर वातावरण के लिए छद्म यादृच्छिक संख्या जनरेटर


6
आप स्वतंत्र रूप से सैंपल बीजों के साथ PRNG का उपयोग क्यों नहीं करेंगे ? मुझे समझ में नहीं आता कि यह 1 और 2 को कैसे संतुष्ट नहीं करता है, क्योंकि आपको विभिन्न मशीनों के बीच कोई समन्वय की आवश्यकता नहीं है1000
Sasho Nikolov

मैं एक विशेषज्ञ नहीं हूँ, लेकिन हाल ही में (TCS प्रश्न के बारे में जानकारी खोजते हुए) मुझे यह हार्डवेयर मिला: idquantique.com/true-random-number-generator/… ... एक PCI बोर्ड जो एक 16Mbits / sec स्ट्रीम उत्पन्न कर सकता है (क्वांटम) यादृच्छिक बिट्स। ... आप उनमें से एक गुच्छा खरीद सकते हैं और कुछ यादृच्छिक संख्या जनरेटर सर्वरों को लागू कर सकते हैं ... एक महान सैद्धांतिक दृष्टिकोण नहीं है लेकिन बिट्स "अच्छा" होने की गारंटी है :-) :-)
Marzio De Biasi

@ हमारे लिए: मैं सब कुछ दोहराना और नियतात्मक रखना चाहूंगा। एक निश्चित बीज को देखते हुए, यदि मैं प्रयोग को फिर से चलाऊं तो मैं ठीक वैसा ही परिणाम पाना चाहता हूं। और मैं एक ही मशीन पर एक ही प्रयोग चलाने और फिर से एक ही परिणाम प्राप्त करने में सक्षम होना चाहता हूं। (एक के लिए, यह बहुत मदद करता है जब समानांतर एल्गोरिदम डिबगिंग ...)
जुका सुमेला

@ जुक्का: ठीक है! ... और मुझे लगता है कि प्रयोग के परिणामों के साथ अरबों unzippable जंगली बिट्स के भंडारण के लिए इतना संभव नहीं है :-) ... एक PRNG विशेषज्ञ की जरूरत है!
मार्जियो डी बियासी

2
अब तक उत्तर देते रहने के लिए धन्यवाद! आइए देखें कि क्या हमें एक इनाम के साथ अधिक भागीदारी मिलती है ...
जुका सुकोमेला

जवाबों:


7

आप साइटो और मात्सुमोतो द्वारा विकसित मर्सेन ट्विस्टर एल्गोरिथ्म के विकास का उपयोग कर सकते हैं:

SIMD- उन्मुख फास्ट मेर्सन ट्विस्टर (SFMT)

SFMT एक रैखिक प्रतिक्रियाशील पारी रजिस्टर (LFSR) जनरेटर है जो एक कदम पर 128-बिट छद्म आयामी पूर्णांक बनाता है। एसएफएमटी को आधुनिक सीपीयू के हाल के समानांतरवाद के साथ डिज़ाइन किया गया है, जैसे कि मल्टी-स्टेज पाइपलाइनिंग और SIMD (जैसे 128-बिट पूर्णांक) निर्देश। यह 32-बिट और 64-बिट पूर्णांक का समर्थन करता है, साथ ही आउटपुट के रूप में डबल सटीक फ़्लोटिंग पॉइंट भी। एसएफएमटी अधिकांश प्लेटफार्मों में एमटी की तुलना में बहुत तेज है। न केवल गति, बल्कि वी-बिट परिशुद्धता पर समानताओं के आयामों में भी सुधार हुआ है। इसके अलावा, 0-अतिरिक्त प्रारंभिक अवस्था से पुनर्प्राप्ति बहुत तेज है। विस्तार के लिए देखें म्यूटसू सैटो के मास्टर की थीसिस

अवधि से 2 216091 - 1 तक भिन्न होती है ।2607122160911

प्रारंभिक मूल्यों को बदलकर कई स्वतंत्र धाराओं को उत्पन्न करने के लिए एक ही pesudorandom नंबर जनरेटर का उपयोग करना समस्या का कारण हो सकता है (लापरवाही से छोटी संभावना के साथ)। समस्या से बचने के लिए, प्रत्येक पीढ़ी के लिए विभिन्न मापदंडों का उपयोग करना पसंद किया जाता है। इस तकनीक को एमटी मापदंडों का गतिशील निर्माण कहा जाता है ।

SFMT स्रोत कोड में आप CSV फ़ाइल को एक कंपाइलेबल पैरामीटर सेट में बदलने के लिए पैरामीटर सेट (चर अवधि के) और एक अजीब स्क्रिप्ट के कुछ उदाहरण पा सकते हैं। एक उपकरण भी है जिसे " डायनेमिक क्रिएशन ऑफ मर्सन ट्विस्टर जेनरेटर " कहा जाता है।

लेखकों ने हाल ही में Mersenne Twister का एक और संशोधित संस्करण विकसित किया - Mersenne Twister ग्राफिक प्रोसेसर के लिए - GPU में चलाने और उनके मूल समानांतर निष्पादन थ्रेड्स का लाभ उठाने के लिए डिज़ाइन किया गया। मुख्य विशेषता गति है: एक GeForce GTX 260 पर प्रत्येक 4.6ms में यादृच्छिक पूर्णांक।5×107

उत्पन्न अनुक्रम की अवधि , 2 23209 - 1 और 2 44497 - 1 32-बिट संस्करण के लिए है, और 2 23209 - 1 , 2 44497 - 1 , 2 110503 - 1 64-बिट संस्करण के लिए है। यह प्रत्येक अवधि के लिए 128 पैरामीटर सेट का समर्थन करता है, दूसरे शब्दों में, यह प्रत्येक अवधि के लिए 128 स्वतंत्र छद्म आयामी संख्या अनुक्रम उत्पन्न कर सकता है। हमने MTGP के लिए डायनामिक क्रिएटर विकसित किया है, जो अधिक पैरामीटर सेट उत्पन्न करता है2112131223209124449712232091244497121105031

वास्तव में वे 2 32 पैरामीटर सेट (यानी स्वतंत्र स्ट्रीम) बनाने के लिए एक MTGPDC उपकरण प्रदान करते हैं ।232

एल्गोरिथ्म डायहार्ड और एनआईएसटी जैसे मुख्य यादृच्छिकता परीक्षणों को पास करता है।

प्रारंभिक कागज भी arXiv पर उपलब्ध है: Mersenne ट्विस्टर के एक वेरिएंट ग्राफिक प्रोसेसर के लिए उपयुक्त


एक संबंधित लेकिन पुराना उपकरण मात्सुमोतो और निशिमुरा (1998) है: डायनामिक क्रिएशन ऑफ स्यूडोरैंडेमिक नंबर जेनरेटर । लेकिन मैं यह पता लगाने में सक्षम नहीं हूं कि इनमें से कौन सा उपकरण सिर्फ अवधारणा का प्रमाण है और जो व्यापक रूप से उपयोग किए जाने वाले उद्योग-शक्ति सॉफ्टवेयर पैकेज हैं।
जुक्का सूमेला

@ जुक्का: शायद आप इसे सीधे MTGP एल्गोरिथ्म के लेखकों से पूछ सकते हैं। उनकी साइट से: "... किसी भी प्रतिक्रिया का स्वागत है (साइन इन करें। एक ईमेल भेजें" साइन इन करें "math.sci.hiroshima-u.ac.jp और m-mat" साइन "math.sci.hiroshima- u.ac.jp) ... "। शायद वे 100% निष्पक्ष नहीं हो सकते हैं, लेकिन वे निश्चित रूप से MTGP के मजबूत और कमजोर बिंदुओं को अच्छी तरह से जानते हैं, और आपको बता सकते हैं कि क्या यह आपके purpouses के लिए उपयुक्त हो सकता है।
मार्जियो डी बियासी

ऐसा लगता है कि मर्सिएने ट्विस्टर + डायनामिक क्रिएशन इसे मैथेमेटिका में करने का अनुशंसित तरीका है।
जुल्का सुमेला

5×107

@Vor: यदि आप अपना उत्तर संपादित करते हैं और MTGP को dcmt से प्रतिस्थापित करते हैं, तो मैं इसे स्वीकार कर सकता हूं।
जुल्का सुमेला

12

xi+1=xi2 mod NNxixi+k=xi2k mod N=xi2k mod λ(N)mod NkO(log(N)3)Myxi+1,y=xi2Mmod λ(N) mod Nx0,y=x02y mod λ(N) mod Nx0

MN2M mod λ(N)


1
मुझे लगता है कि प्रत्येक मशीन को अनुक्रम के एक सन्निहित हिस्से को उत्पन्न करने देने के लिए तेजी से होगा, उन्हें इतनी दूर तक फैलाएंगे कि वे प्रतिच्छेद नहीं करेंगे। वैसे भी, गैर-क्रिप्टोग्राफिक अनुप्रयोगों के लिए ब्लम ब्लम शुब का उपयोग करना मुझे थोड़ा अधिक लगता है।
एंटोनियो वेलेरियो माइकेली-बारोन

1
@Antonio: हां, यह थोड़ा तेज होगा, खासकर यदि आप समय से पहले जानते हैं कि आपको कितने परीक्षणों की आवश्यकता है। यदि आप नहीं जानते हैं, तो मुझे लगता है कि आप एक ही स्केलिंग प्राप्त करेंगे। Wierdly ब्लम ब्लम शब बिल्कुल PRNG था जिसे हम वर्षों पहले कम्प्यूटेशनल भौतिकी में देख चुके थे। यदि आप इसे क्रिप्टोग्राफिक उद्देश्यों के लिए उपयोग नहीं कर रहे हैं, तो आप बहुत छोटे मापांक का उपयोग कर सकते हैं, इसलिए यह वास्तव में धीमा नहीं है, और कई कार्यों के लिए यह यादृच्छिक चर के किसी भी फ़ंक्शन की तुलना में तेज़ होगा जिसे आपको गणना करने की आवश्यकता है।
जो फिजसिमन्स

5

snX1000ns1,s2,,s10001i1000sin

X

siiX

Xs1i<j1000sisjs


क्या यह अनिवार्य रूप से वैसा ही दृष्टिकोण नहीं है जैसा कि @Antonio ने सुझाया था: खुद के लिए बीज उत्पन्न करने के लिए एक PRNG का उपयोग करें। मैं इस बारे में थोड़ा असहज महसूस कर रहा हूं ... जो गलत हो सकता है उसका एक तुच्छ उदाहरण देने के लिए, एक PRNG पर विचार करें जहां आउटपुट = आंतरिक स्थिति और बीज बस आंतरिक स्थिति सेट करता है।
जुका सुकोमेला

@ जुक्का: मेरा दृष्टिकोण एंटोनियो के समान है, फिर भी मेरा अधिक सामान्य है। आपके उदाहरण में PRNG (जहां आउटपुट = आंतरिक स्थिति) क्रिप्टोग्राफिक रूप से सुरक्षित नहीं लगता है। एक PRNG क्रिप्टोग्राफिक रूप से सुरक्षित है यदि इसका उत्पादन समान वितरण से कम्प्यूटेशनल रूप से अप्रभेद्य है। अधिक जानकारी के लिए इसे देखें । पुनश्च: ब्लम-ब्लम-शु पीआरएनजी इस स्थिति को संतुष्ट करता है।
एमएस डौस्ती

2

fM=1000{0,1,,M1}jif(i+jM)M

यह आपको हर प्रक्रिया पर एक क्रिप्टोग्राफिक आरएनजी देगा, लेकिन यह जरूरी नहीं कि प्रदर्शन लागत के साथ आए। यदि आपके पास इसका समर्थन करने वाला हार्डवेयर है, तो AES तेज़ है, और चाचा परवाह किए बिना तेज़ है। बेशक, आप यह सुनिश्चित करने के लिए अपनी विशिष्ट सेटिंग में मापना चाहते हैं।

f


अगर मुझे क्रिप्टोग्राफिक ताकत की परवाह नहीं है, तो चचा (काउंटर) की तुलना कैसे की जाती है, जैसे, मेर्सन ट्विस्टर? क्या यह तेज या धीमा है? क्या इसके पास कम से कम अच्छे सांख्यिकीय गुण हैं? मैंने Google की कोशिश की, लेकिन उन दोनों लेखों को खोजने में असफल रहा जो इन दोनों की गैर-क्रिप्टोग्राफ़िक संदर्भ में तुलना करते हैं।
जुल्का सुमेला

2

एसएफएमटी (एक तेजी से मर्सेन ट्विस्टर कार्यान्वयन) के लिए अब एक जंप फ़ंक्शन है

यह मुझे 1000 मीट्रिक टन को इनिशियलाइज़ करने की अनुमति देता है ताकि कोई चक्र ओवरलैप न हो। और SFMT MTGP से अधिक तेज़ होना चाहिए। मेरे उद्देश्यों के लिए लगभग सही।


1

आप बस अलग-अलग बीजों के साथ इनिशियलाइज़ किए गए मर्सेन ट्विस्टर के 1000 उदाहरणों का उपयोग कर सकते हैं।

आप एक अन्य Mersenne Twister से बीज का नमूना ले सकते हैं, या, OS क्रिप्टोग्राफ़िक छद्म आयामी संख्या जनरेटर (लिनक्स में / देव / यूरेनियम) से अपनी स्वतंत्रता का सर्जन कर सकते हैं।

Mersenne ट्विस्टर हमेशा एक ही चक्रीय अनुक्रम पर संचालित होता है, बीज नियंत्रण जहां आप इसे उत्पन्न करना शुरू करते हैं। अनिर्दिष्ट रूप से सैंपल किए गए बीजों के साथ, प्रत्येक जनरेटर अलग-अलग, आमतौर पर बहुत दूर के बिंदुओं पर शुरू होगा, चौराहे की बहुत कम संभावना के साथ।


तो एमटी में कुछ अच्छे विशेष गुण हैं जो गारंटी देते हैं कि एमटी को दूसरे एमटी के साथ बोने से समझ में आता है?
जुका सुकोमेला

क्या MT के पास कोई भी सिद्ध छद्म गुण है?
शाशो निकोलेव

@ जुक्का: मैं किसी को भी नहीं जानता। इसलिए मैंने बीजारोपण के लिए एक अन्य प्रकार के PRNG का उपयोग करने का सुझाव दिया है यदि आप विशेष रूप से कुछ अजीब अज्ञात प्रकार के सहसंबंधों से डरते हैं।
एंटोनियो वेलेरियो माइकेली-बारोन

@ साशो: विकिपीडिया पृष्ठ में के-वितरण और बड़ी अवधि का उल्लेख है।
एंटोनियो वेलेरियो माइकेली-बारोन

1
kk
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.