डेव का जवाब काफी अच्छी तरह से इसे फिर से शुरू, लेकिन दूसरे विकल्प पर थोड़ा और स्पष्ट करने के लिए:
एक वास्तविक हार्डवेयर यादृच्छिक संख्या जनरेटर एक भौतिक एन्ट्रापी स्रोत का उपयोग करता है। इस तरह के एक एंट्रोपी स्रोत कॉस्मिक रेडिएशन, इलेक्ट्रिकल शोर, रिवर्स-बायस्ड डायोड (या BJT ट्रांजिस्टर), चुआ सर्किट, आदि से एवलांच प्रभाव हो सकता है। कम निर्धारक एंट्रोपी स्रोत, यादृच्छिक आउटपुट की गुणवत्ता जितनी बेहतर होगी। एक आदर्श एन्ट्रापी स्रोत एक क्वांटम भौतिकी प्रभाव का उपयोग करना होगा, या ऐसा कुछ जो संभवतः नियतात्मक समीकरणों के साथ मॉडलिंग नहीं कर सकता है।
यादृच्छिक संख्या जनरेटर के साथ एक अन्य महत्वपूर्ण कारक यह है कि एन्ट्रापी स्रोत केवल प्रति यूनिट एन्ट्रापी की सीमित मात्रा में उत्पन्न कर सकता है। एक अच्छा उदाहरण चुआ सर्किट है: जबकि यह काफी यादृच्छिक है, इसकी गति बहुत खराब है और संभवतः इसका उपयोग वास्तविक जीवन के आवेदन के लिए नहीं किया जा सकता है।
अंतर्निहित आरएनजी के साथ कई प्रोसेसर / माइक्रोकंट्रोलर में, 2 से 4 घड़ियों से घड़ी का बहाव तेज होता है जो जानबूझकर गलत तरीके से सिंक्रनाइज़ किया जाता है। फिर, वे एनालॉग और डिजिटल फ़िल्टर दोनों का उपयोग करते हैं ताकि एक रजिस्टर में पैटर्न और शिफ्ट-इन को और अधिक यादृच्छिक किया जा सके। इस तरह के फ़िल्टरिंग को करने के लिए कुछ चक्रों की आवश्यकता होती है, जो नए मूल्य के उपलब्ध होने से पहले किसी दिए गए घड़ी पर आवश्यक चक्रों की न्यूनतम मात्रा की व्याख्या करता है।
घड़ी का बहाव काफी मात्रा में प्रभाव नहीं है, इसलिए इसे मॉडल किया जा सकता है, लेकिन यह यादृच्छिक रूप से पर्याप्त है, क्योंकि यह बहुत सारे मापदंडों पर निर्भर है, जैसे कि तापमान, सिलिकॉन प्रक्रिया, संचालन की आवृत्ति, विद्युत शोर, पृष्ठभूमि विकिरण, आदि। ।
उन अनुप्रयोगों में जहां हार्डवेयर RNG में पर्याप्त थ्रूपुट नहीं है (जैसे अत्यधिक मांग वाले क्रिप्टोग्राफ़िक अनुप्रयोगों में), यह छद्म यादृच्छिक संख्या जनरेटर जैसे कि रैंड () sdtlib में फ़ंक्शन के लिए हार्डवेयर RNG को बीज के रूप में उपयोग करना काफी आम है। हालांकि, इस तरह के आवेदन आमतौर पर रैंड () का बेहतर क्रियान्वयन प्रदान करते हैं जो विशेष रूप से एक बीज से चलने के लिए डिज़ाइन किया गया है जिसे सच्चे यादृच्छिक मूल्यों के साथ बहुत बार खारिज किया जा सकता है। एकीकृत हार्डवेयर RNGs के साथ नए इंटेल प्रोसेसर में, छद्म-यादृच्छिक एल्गोरिथ्म भाग सीधे सिलिकॉन में एकीकृत होता है, इसलिए यह हार्डवेयर द्वारा किया जाता है, बहुत उच्च यादृच्छिक थ्रूपुट उपज देता है।
यदि आप रैंड () विधि के बारे में सोचते हैं, तो यह केवल एक मेटामेटिकल अभिव्यक्ति है, जो एक बड़ी पर्याप्त मात्रा में प्रवेश करने के लिए डिज़ाइन की गई है। आवेदन पर बहुत अधिक निर्भर होना: क्रिप्टोग्राफिक कुंजी पीढ़ियों के लिए, यादृच्छिकता को उच्च गुणवत्ता की आवश्यकता होती है जो आपके पसंदीदा संगीत खिलाड़ी में एक साधारण यादृच्छिक फेरबदल के लिए आवश्यक यादृच्छिकता है। यह स्पष्ट है कि यादृच्छिक आउटपुट की गुणवत्ता जितनी अधिक होगी, यादृच्छिक संख्या की कम्प्यूटेशनल लागत उतनी ही अधिक होगी।
एक यादृच्छिक संख्या में शामिल संचालन एक फ़ाइल के एमडी 5 हैश की गणना करने में शामिल एक के समान है: वे एक प्रकार के बिट हिमस्खलन प्रभाव का उपयोग करने की कोशिश करते हैं ताकि बीज के मूल्य में एक एकल परिवर्तन पूरे उत्पन्न होने वाले पैटर्न को बदल दे। एक साइड नोट के रूप में, मैं एमडी 5 को छद्म यादृच्छिक संख्या जनरेटर के रूप में उपयोग करने की अनुशंसा नहीं करता हूं; यह केवल एक उदाहरण था। यह दोनों अकुशल होगा और इतना यादृच्छिक नहीं होगा, लेकिन बिंदु यह है: यदि आप एमडी 5 हैशिंग एल्गोरिथ्म में एक ही फ़ाइल फ़ीड करते हैं, तो आपको हमेशा एक ही नियतात्मक आउटपुट मिलेगा, बहुत अधिक उसी तरह से जैसे आप हमेशा एक ही आउटपुट प्राप्त करेंगे रैंड () फ़ंक्शन यदि आप उसी बीज को इनपुट करते हैं जब तक कि आपका कार्यान्वयन वर्तमान समय जैसे कुछ मनमाने तत्वों पर निर्भर न हो।