रैंड () फ़ंक्शन और आरएनजी (रैंडम नंबर जनरेटर) परिधीय के बीच अंतर क्या हैं?


9

मैं STM32F4XXXX MCUs में RNG (रैंडम नंबर जनरेटर) परिधीय के लिए आश्चर्यचकित हूं। में देखने के लिए इस संदर्भ मैनुअल (पेज 748)। दूसरी ओर, हमारे पास stdlib लाइब्रेरी में रैंड () फ़ंक्शन है जो समान कार्य करता है। अब मेरे दो सवाल हैं:

  1. रैंड () फ़ंक्शन और RNG (रैंडम नंबर जनरेटर) परिधीय के बीच अंतर (लाभ और नुकसान) क्या हैं?
  2. इस भाग को देखें:

विशेषताएं

कृपया इन दोनों विकल्प (विशेषकर दूसरा विकल्प) के बारे में बताएं।

जवाबों:


12

डेव का जवाब काफी अच्छी तरह से इसे फिर से शुरू, लेकिन दूसरे विकल्प पर थोड़ा और स्पष्ट करने के लिए:

एक वास्तविक हार्डवेयर यादृच्छिक संख्या जनरेटर एक भौतिक एन्ट्रापी स्रोत का उपयोग करता है। इस तरह के एक एंट्रोपी स्रोत कॉस्मिक रेडिएशन, इलेक्ट्रिकल शोर, रिवर्स-बायस्ड डायोड (या BJT ट्रांजिस्टर), चुआ सर्किट, आदि से एवलांच प्रभाव हो सकता है। कम निर्धारक एंट्रोपी स्रोत, यादृच्छिक आउटपुट की गुणवत्ता जितनी बेहतर होगी। एक आदर्श एन्ट्रापी स्रोत एक क्वांटम भौतिकी प्रभाव का उपयोग करना होगा, या ऐसा कुछ जो संभवतः नियतात्मक समीकरणों के साथ मॉडलिंग नहीं कर सकता है।

यादृच्छिक संख्या जनरेटर के साथ एक अन्य महत्वपूर्ण कारक यह है कि एन्ट्रापी स्रोत केवल प्रति यूनिट एन्ट्रापी की सीमित मात्रा में उत्पन्न कर सकता है। एक अच्छा उदाहरण चुआ सर्किट है: जबकि यह काफी यादृच्छिक है, इसकी गति बहुत खराब है और संभवतः इसका उपयोग वास्तविक जीवन के आवेदन के लिए नहीं किया जा सकता है।

अंतर्निहित आरएनजी के साथ कई प्रोसेसर / माइक्रोकंट्रोलर में, 2 से 4 घड़ियों से घड़ी का बहाव तेज होता है जो जानबूझकर गलत तरीके से सिंक्रनाइज़ किया जाता है। फिर, वे एनालॉग और डिजिटल फ़िल्टर दोनों का उपयोग करते हैं ताकि एक रजिस्टर में पैटर्न और शिफ्ट-इन को और अधिक यादृच्छिक किया जा सके। इस तरह के फ़िल्टरिंग को करने के लिए कुछ चक्रों की आवश्यकता होती है, जो नए मूल्य के उपलब्ध होने से पहले किसी दिए गए घड़ी पर आवश्यक चक्रों की न्यूनतम मात्रा की व्याख्या करता है।

घड़ी का बहाव काफी मात्रा में प्रभाव नहीं है, इसलिए इसे मॉडल किया जा सकता है, लेकिन यह यादृच्छिक रूप से पर्याप्त है, क्योंकि यह बहुत सारे मापदंडों पर निर्भर है, जैसे कि तापमान, सिलिकॉन प्रक्रिया, संचालन की आवृत्ति, विद्युत शोर, पृष्ठभूमि विकिरण, आदि। ।

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

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

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


7

मुख्य अंतर यह है कि rand()लाइब्रेरी फ़ंक्शन एक छद्म आयामी संख्या जनरेटर है - किसी भी विशेष शुरुआती (बीज) मूल्य को देखते हुए, यह हमेशा संख्याओं के समान अनुक्रम का उत्पादन करेगा।

दूसरी ओर, RNG परिधीय एक सच्चा यादृच्छिक संख्या जनरेटर है, और यह संख्याओं के अपरिवर्तनीय अनुक्रमों का उत्पादन करेगा।


धन्यवाद। और उन दोनों विकल्प ..?
रोह

2
क्या करता है "और उन दोनों विकल्प ..?" क्या मतलब है? क्या यह एक सवाल है?
जॉन यू

2

आपके द्वारा उल्लिखित दो विषयों को अपेक्षाकृत आसानी से वर्णित किया जा सकता है:

  • 1: आप हर 40 घड़ी चक्र की तुलना में एक बार से अधिक यादृच्छिक संख्या उत्पन्न नहीं कर सकते हैं, इसलिए इसका परिणाम 48MHz / 40 = ~ 1M नमूना / s है
  • 2: हार्डवेयर में एक मॉनिटर होता है जो अजीब व्यवहार के लिए प्रत्येक उत्पन्न संख्या की जांच करेगा। उदाहरण के लिए, यदि आप एक स्रोत के रूप में तापमान का उपयोग करते हैं और एक अत्यधिक स्थिर तापमान वातावरण होता है, तो ऐसा हो सकता है कि RNG एक ही संख्या अनुक्रम को फिर से उत्पन्न करेगा (जैसे कि एक छद्म यादृच्छिक संख्या जनरेटर यदि आप एक ही बीज मान से शुरू करेंगे) । घटक इस पर नजर रखेगा और आपको एक संकेत प्रदान करेगा यदि RNG काम करता है जैसा कि अपेक्षित है। यदि आपको "वास्तव में" यादृच्छिक होने के लिए आपके नंबरों की आवश्यकता है, तो आप इस ध्वज की निगरानी करना चाह सकते हैं कि क्या वे वास्तव में हैं। यह वास्तव में कैसे किया जाता है और RNG वास्तव में कैसे काम करता है, शायद शेष पाठ में दिया गया है।

1

मान लीजिए कि एक यांत्रिक रोलेट-व्हील स्पिनर को डिजाइन करता है जो एक निश्चित समय के लिए मोटर को सक्रिय करता है, पहिया और गेंद के आराम करने के लिए इंतजार करता है, और देखता है कि गेंद किस जेब में है। आम तौर पर प्रत्येक गेंद और पहिया को स्पिन करने के बाद। एक अलग स्थान पर अंत में, और एक स्पिन के बाद गेंद के स्थान में छोटे बदलाव, अगले स्पिन पर समाप्त होने पर एक बड़ा अंतर ला सकते हैं। इस प्रकार, भले ही मोटर हमेशा एक ही लंबाई के लिए ऊर्जावान हो, जेब जहां एक स्पिन पर एक गेंद भूमि होती है, जहां वह स्पिन से पहले उतरा होता है।

अब, मान लीजिए, कि कुछ संख्याओं में या उनमें मामूली गिरावट विकसित हुई है, और मोटर के बीयरिंग फ्लैट स्पॉट विकसित करते हैं। फिर कुछ स्पिन यादृच्छिक होंगे, लेकिन एक स्पिन के बाद, जिसके परिणामस्वरूप गेंद एक अवसाद में होती है और एक सपाट स्थान पर असर होता है, अगले स्पिन बहुत अच्छी तरह से पिछले स्पिन के समान परिणाम होने की ओर पक्षपाती हो सकता है जहां यह हुआ था। यदि अधिकांश स्पिन एक साथ विभाजक और सपाट स्थान पर नहीं आते हैं, तो उनका अस्तित्व संभवतः चीजों को बहुत अधिक प्रभावित नहीं करेगा। दूसरी ओर, यदि एक डिवोकेट / फ्लैट कॉम्बो को सही जगह पर रखा जाता है, ताकि वहां एक गेंद लगभग एक सेकंड में लगातार जमीन पर रहे, और यह कि ऐसा होता है ताकि गेंद को वापस पहले पर भेजा जा सके, तो एक कुछ अत्यंत तिरछे व्यवहार के साथ अंत।

यदि, 4 और 23 पर उतरने के बाद, अगला स्पिन 4 है, तो यह जरूरी नहीं कि समस्या का संकेत हो। एक 4 को उस स्थिति में समय के 1/38 के बारे में प्रकट होना चाहिए। इसके अलावा, यादृच्छिक डेटा के अधिग्रहण के लिए बस जेब नंबर पर कब्जा करना चाहिए, क्योंकि उपयोगी कुछ भी नहीं पता है कि गेंद को जेब के विभिन्न हिस्सों में कितनी बार आराम करना चाहिए। फिर भी, जो कुछ भी रिकॉर्डिंग के लिए उपयोगी हो सकता है वह संख्या "अवलोकन" भी करें जहां जेब में गेंद रुकती है और किसी भी असामान्य पैटर्न के लिए देखते हैं। किसी समस्या का संकेत दिए बिना स्थानों का वितरण आगे या पीछे की ओर तिरछा किया जा सकता है, लेकिन यदि वितरण में एक संकीर्ण कील है जो चिंता का कारण हो सकता है।

यदि एक यादृच्छिक जनरेटर से लगातार रीडिंग सांख्यिकीय रूप से स्वतंत्र हैं , तो पूर्वाग्रह के लिए क्षतिपूर्ति करना मुश्किल नहीं है (हालांकि आवश्यक समय nondeterministic है)। यदि, हालांकि, एक जनरेटर एक ऐसी स्थिति में आता है जहां रीडिंग स्वतंत्र नहीं होती है (उदाहरण के लिए ऊपर पहिया का चक्रीय राज्य), तो मुआवजा मूल रूप से असंभव हो जाता है - इस प्रकार इस तरह के व्यवहार का पता लगाने के लिए सर्किटरी को शामिल करने के लिए एक हार्डवेयर आरएनजी की आवश्यकता होती है।

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