एक छद्म यादृच्छिक संख्या एक विशेष जनरेटर द्वारा उत्पन्न एक विशेष संख्या है। नियतात्मक रैंडम बिट जेनरेटर (PRNG), जिसे नियतात्मक रैंडम बिट जेनरेटर (DRBG) के रूप में भी जाना जाता है, संख्याओं के अनुक्रम को उत्पन्न करने के लिए एक एल्गोरिथ्म है, जिसके गुण यादृच्छिक संख्या अनुक्रमों की विशेषताओं का अनुमान लगाते हैं। उत्पन्न पीआरएनजी अनुक्रम वास्तव में यादृच्छिक नहीं है, क्योंकि यह पूरी तरह से पीआरएनजी बीज नामक बीज मूल्य द्वारा निर्धारित किया जाता है, जिसमें वास्तव में यादृच्छिक मान शामिल हो सकते हैं। हालांकि अनुक्रम जो यादृच्छिक के करीब हैं, हार्डवेयर यादृच्छिक संख्या जनरेटर का उपयोग करके उत्पन्न किया जा सकता है, छद्म-यादृच्छिक संख्या जनरेटर संख्या पीढ़ी की गति और उनके पुनरुत्पादन के लिए व्यवहार में महत्वपूर्ण हैं।
आवेदन
PRNGs सिमुलेशन (जैसे मोंटे कार्लो के लिए), इलेक्ट्रॉनिक गेम (जैसे प्रक्रियात्मक पीढ़ी के लिए), और क्रिप्टोग्राफी जैसे अनुप्रयोगों के लिए केंद्रीय हैं। क्रिप्टोग्राफ़िक अनुप्रयोगों के लिए आवश्यक है कि आउटपुटडेटा पहले की जानकारी से अनुमानित नहीं था। अधिक जटिल एल्गोरिदम की आवश्यकता होती है जो सरल PRNGs की रैखिकता को इनहेरिट नहीं करते हैं।
नियम और शर्तें
PRNG प्राप्त करने के लिए
अच्छे सांख्यिकीय गुण एक केंद्रीय आवश्यकता हैं। सामान्य तौर पर, यह सुनिश्चित करने के लिए सावधानीपूर्वक गणितीय विश्लेषण की आवश्यकता होती है कि RNG ऐसी संख्याएँ उत्पन्न करता है जो इच्छित उपयोग के लिए उपयुक्त होने के लिए यादृच्छिक के काफी करीब हैं।
जॉन वॉन न्यूमैन ने पीआरएनजी को वास्तव में यादृच्छिक जनरेटर के रूप में गलत व्याख्या करने के खिलाफ चेतावनी दी और मजाक में कहा कि "जो कोई भी यादृच्छिक संख्या उत्पन्न करने के लिए अंकगणितीय तरीकों पर विचार करता है वह निश्चित रूप से पाप की स्थिति में है।"
उपयोग
PRNG को मनमाना प्रारंभिक अवस्था से लॉन्च किया जा सकता है। इस राज्य के साथ प्रारंभ होने पर यह हमेशा एक ही अनुक्रम उत्पन्न करेगा। पीआरएनजी अवधि को निम्नानुसार परिभाषित किया गया है: गैर-दोहराए जाने वाले अनुक्रम उपसर्ग की लंबाई के सभी प्रारंभिक राज्यों में अधिकतम। अवधि राज्यों की संख्या से सीमित है, आमतौर पर बिट्स में मापा जाता है। चूंकि अवधि की लंबाई संभावित रूप से प्रत्येक "राज्य" बिट के साथ दोगुनी हो जाती है, इसलिए कई व्यावहारिक अनुप्रयोगों के लिए पर्याप्त अवधि के साथ पीआरएनजी बनाना आसान है।
यदि PRNG की आंतरिक स्थिति में n बिट्स हैं, तो इसकी अवधि 2n से अधिक परिणाम नहीं हो सकती है, यह बहुत कम है। कुछ पीआरएनजी के लिए, अवधि की गणना पूरी अवधि को दरकिनार किए बिना की जा सकती है। लीनियर फीडबैक शिफ्ट रजिस्टर (एलएफएसआर) आमतौर पर होते हैं2n − 1.
के बराबर आवर्त होने के लिए चुना जाता है
रैखिक सर्वांगसम जनित्रों में ऐसी अवधियाँ होती हैं जिनकी गणना फ़ैक्टरिंग का उपयोग करके की जा सकती है। हालांकि पीपीपी अवधि के अंत तक पहुंचने के बाद अपने परिणामों को दोहराएगा, दोहराया परिणाम का मतलब यह नहीं है कि अवधि का अंत पहुंच गया है, क्योंकि इसकी आंतरिक स्थिति आउटपुट से अधिक हो सकती है; यह सिंगल बिट आउटपुट वाले PRNG के लिए विशेष रूप से स्पष्ट है।
संभावित त्रुटियां
दोषपूर्ण पीआरएनजी द्वारा पाई गई त्रुटियां सूक्ष्म (और अज्ञात) से लेकर स्पष्ट तक होती हैं। एक उदाहरण RANDU रैंडम नंबर एल्गोरिथम है, जिसका उपयोग दशकों से मेनफ्रेम पर किया जाता रहा है। यह एक गंभीर कमी थी, लेकिन इसकी अपर्याप्तता पर लंबे समय तक ध्यान नहीं दिया गया।
कई क्षेत्रों में, अनुसंधान अध्ययन जिनमें यादृच्छिक चयन, मोंटे कार्लो सिमुलेशन, या आरएनजी पर आधारित अन्य विधियों का उपयोग किया गया है, वे खराब गुणवत्ता वाले जीएनपीजी के परिणाम की तुलना में बहुत कम विश्वसनीय हैं। आज भी, कभी-कभी सावधानी बरतने की आवश्यकता होती है, जैसा कि सांख्यिकीय विज्ञान के अंतर्राष्ट्रीय विश्वकोश (2010) में चेतावनी से प्रमाणित है।
सफल केस स्टडी
एक उदाहरण के रूप में, व्यापक रूप से उपयोग की जाने वाली जावा प्रोग्रामिंग भाषा पर विचार करें। 2017 तक, जावा अभी भी अपने PRNG के लिए लीनियर कॉन्ग्रेंशियल जेनरेटर (LCG) पर निर्भर है।
इतिहास
गंभीर समस्याओं से बचने के लिए पहला पीआरएनजी और अभी भी बहुत तेज दौड़ता है,मेर्सन ट्विस्टर (नीचे चर्चा की गई) थी, जो 1998 में प्रकाशित हुई थी। तब से, अन्य उच्च गुणवत्ता वाले पीआरएनजी विकसित किए गए हैं।
लेकिन छद्म यादृच्छिक संख्याओं का इतिहास यहीं समाप्त नहीं होता है। 20वीं शताब्दी के उत्तरार्ध में, पीआरएनजी के लिए उपयोग किए जाने वाले एल्गोरिदम के मानक वर्ग में रैखिक सर्वांगसम जनरेटर शामिल थे। एलसीजी की गुणवत्ता को अपर्याप्त माना जाता था, लेकिन बेहतर तरीके उपलब्ध नहीं थे। प्रेस एट अल (2007) ने परिणाम का वर्णन इस प्रकार किया: "यदि सभी वैज्ञानिक पेपर जिनके परिणाम [एलसीजी और संबंधित] के कारण संदेह में हैं, पुस्तकालय अलमारियों से गायब हो गए हैं, तो प्रत्येक शेल्फ पर आपकी मुट्ठी के आकार का अंतर होगा।"
छद्म-यादृच्छिक जनरेटर के निर्माण में मुख्य उपलब्धि दो-तत्व क्षेत्र में रैखिक आवर्तक के आधार पर विधियों की शुरूआत थी; ऐसे ऑसिलेटर्स को लीनियर फीडबैक शिफ्ट रजिस्टर से जोड़ा जाता है। उन्होंने छद्म यादृच्छिक संख्या सेंसर के आविष्कार के आधार के रूप में कार्य किया।
विशेष रूप से, मेर्सन ट्विस्टर द्वारा 1997 के आविष्कार ने पहले के जनरेटर के साथ कई समस्याओं से बचा लिया। मेर्सन ट्विस्टर में 219937−1 पुनरावृत्तियों (≈4.3 × 106001) की अवधि है। यह 623 आयामों (32-बिट मानों के लिए) में समान रूप से वितरित होने के लिए सिद्ध किया गया है, और इसके परिचय के समय छद्म यादृच्छिक संख्या अनुक्रम उत्पन्न करने वाले अन्य सांख्यिकीय रूप से ध्वनि जनरेटर की तुलना में तेज़ था।
2003 में, जॉर्ज मार्सग्लिया ने रैखिक दोहराव पर आधारित xorshift जनरेटर के एक परिवार की शुरुआत की। ये जनरेटर अत्यंत हैंतेज़ हैं और - एक गैर-रेखीय ऑपरेशन के साथ संयुक्त - वे कठोर सांख्यिकीय परीक्षण पास करते हैं।
2006 में, WELL जनरेटर परिवार विकसित किया गया था। WELL जनरेटर एक तरह से ट्विस्टर मेर्सन की गुणवत्ता में सुधार करते हैं, जिसमें बहुत अधिक राज्य स्थान होता है और उनसे बहुत धीमी गति से रिकवरी होती है, जिससे बहुत सारे शून्य के साथ छद्म-यादृच्छिक संख्याएँ उत्पन्न होती हैं।
क्रिप्टोग्राफी
क्रिप्टोग्राफिक अनुप्रयोगों के लिए उपयुक्त पीआरएनजी को क्रिप्टोग्राफिक रूप से सुरक्षित पीआरएनजी (सीएसपीआरएनजी) कहा जाता है। CSPRNG की आवश्यकता यह है कि एक हमलावर जो बीज को नहीं जानता है, उसे जनरेटर के आउटपुट अनुक्रम को यादृच्छिक अनुक्रम से अलग करने में केवल मामूली लाभ होता है। दूसरे शब्दों में, जबकि एक PRNG को केवल कुछ सांख्यिकीय परीक्षण पास करने की आवश्यकता होती है, एक CSPRNG को सभी सांख्यिकीय परीक्षणों को पास करना होगा जो बीज आकार में बहुपद समय तक सीमित हैं।
यद्यपि इस गुण का प्रमाण कम्प्यूटेशनल जटिलता सिद्धांत के वर्तमान स्तर से परे है, सीएसपीआरएनजी को एक ऐसी समस्या को कम करके मजबूत सबूत प्रदान किया जा सकता है जिसे पूर्णांक कारककरण की तरह कठिन माना जाता है। सामान्य तौर पर, एल्गोरिदम को सीएसपीआरएनजी के रूप में प्रमाणित करने से पहले वर्षों की समीक्षा की आवश्यकता हो सकती है।
यह दिखाया गया है कि यह संभावना है कि NSA ने NIST-प्रमाणित Dual_EC_DRBG छद्म-यादृच्छिक संख्या जनरेटर में एक असममित पिछला दरवाजा डाला।
छद्म यादृच्छिक एल्गोरिदमनंबर
अधिकांश पीआरएनजी एल्गोरिदम अनुक्रम उत्पन्न करते हैं जो समान रूप से कई परीक्षणों में से किसी एक द्वारा वितरित किए जाते हैं। यह एक खुला प्रश्न है। यह क्रिप्टोग्राफी के सिद्धांत और व्यवहार में केंद्रीय में से एक है: क्या उच्च गुणवत्ता वाले पीआरएनजी के आउटपुट को वास्तव में यादृच्छिक अनुक्रम से अलग करने का कोई तरीका है? इस सेटिंग में, रिज़ॉल्वर जानता है कि या तो एक ज्ञात PRNG एल्गोरिथ्म का उपयोग किया गया था (लेकिन वह राज्य नहीं जिसके साथ इसे आरंभ किया गया था), या वास्तव में यादृच्छिक एल्गोरिथ्म का उपयोग किया गया था। उसे उनके बीच अंतर करना चाहिए।
अधिकांश क्रिप्टोग्राफिक एल्गोरिदम और पीआरएनजी का उपयोग करने वाले प्रोटोकॉल की सुरक्षा इस धारणा पर आधारित है कि उपयुक्त पीआरएनजी के उपयोग और वास्तव में यादृच्छिक अनुक्रम के उपयोग के बीच अंतर करना असंभव है। इस निर्भरता के सबसे सरल उदाहरण स्ट्रीम सिफर हैं, जो अक्सर पीआरएनजी आउटपुट के साथ प्लेनटेक्स्ट संदेश को छोड़कर या सिफरटेक्स्ट का निर्माण करके काम करते हैं। क्रिप्टोग्राफिक रूप से पर्याप्त पीआरएनजी डिजाइन करना बेहद मुश्किल है क्योंकि उन्हें अतिरिक्त मानदंडों को पूरा करना होगा। पीआरएनजी की क्रिप्टोग्राफिक उपयुक्तता में इसकी अवधि का आकार एक महत्वपूर्ण कारक है, लेकिन केवल एक ही नहीं।
1946 में जॉन वॉन न्यूमैन द्वारा प्रस्तावित एक प्रारंभिक कंप्यूटर PRNG को माध्य वर्ग विधि के रूप में जाना जाता है। एल्गोरिथ्म इस प्रकार है: कोई भी संख्या लें, इसे वर्ग करें, परिणामी संख्या के मध्य अंकों को "यादृच्छिक संख्या" के रूप में हटा दें, फिर इस संख्या को अगले पुनरावृत्ति के लिए प्रारंभिक संख्या के रूप में उपयोग करें। उदाहरण के लिए, संख्या 1111 का वर्ग करने पर प्राप्त होता है1234321, जिसे 01234321 के रूप में लिखा जा सकता है, एक 8-अंकीय संख्या 4-अंकीय संख्या का वर्ग है। यह 2343 को "यादृच्छिक" संख्या के रूप में देता है। इस प्रक्रिया को दोहराने का परिणाम 4896 है, इत्यादि। वॉन न्यूमैन ने 10 अंकों की संख्याओं का उपयोग किया, लेकिन प्रक्रिया समान थी।
"मध्य वर्ग" के नुकसान
"माध्य वर्ग" पद्धति के साथ समस्या यह है कि सभी अनुक्रम अंततः दोहराते हैं, कुछ बहुत जल्दी, उदाहरण के लिए: 0000। वॉन न्यूमैन को इसके बारे में पता था, लेकिन उन्होंने अपने उद्देश्यों के लिए पर्याप्त दृष्टिकोण पाया, और चिंतित थे कि गणित "सुधार" त्रुटियों को हटाने के बजाय उन्हें छिपा देगा।
वॉन न्यूमैन ने हार्डवेयर को यादृच्छिक और छद्म-यादृच्छिक संख्या जनरेटर अनुपयुक्त पाया: यदि वे उत्पन्न आउटपुट को रिकॉर्ड नहीं करते हैं, तो उन्हें बाद में त्रुटियों के लिए जाँच नहीं किया जा सकता है। यदि वे अपने परिणामों को लिख लेते हैं, तो वे कंप्यूटर की सीमित उपलब्ध मेमोरी को समाप्त कर देंगे और इस प्रकार कंप्यूटर की संख्याओं को पढ़ने और लिखने की क्षमता समाप्त हो जाएगी। यदि कार्डों पर संख्याएँ लिखी जातीं, तो उन्हें लिखने और पढ़ने में अधिक समय लगता। ENIAC कंप्यूटर पर उन्होंने "मिडिल स्क्वायर" पद्धति का इस्तेमाल किया और छद्म यादृच्छिक संख्याएं प्राप्त करने की प्रक्रिया को पंच कार्ड से संख्या पढ़ने की तुलना में कई सौ गुना तेज किया।
माध्य वर्ग को तब से अधिक जटिल जनरेटर द्वारा हटा दिया गया है।
अभिनव तरीका
हाल ही में एक नवीनता माध्य वर्ग को वेइल अनुक्रम के साथ संयोजित करना है। यह विधि उच्च गुणवत्ता वाले उत्पादों को सुनिश्चित करती हैलंबी अवधि। यह सबसे अच्छा छद्म यादृच्छिक संख्या सूत्र प्राप्त करने में मदद करता है।