में numpy.random और random.random के बीच मतभेद मेरे पास पायथन में एक बड़ी स्क्रिप्ट है। मैंने खुद को अन्य लोगों के कोड में प्रेरित किया, इसलिए मैंने कुछ चीजों के लिए numpy.random
मॉड्यूल का उपयोग करके समाप्त किया (उदाहरण के लिए एक द्विपदीय वितरण से ली गई यादृच्छिक संख्याओं की एक सरणी बनाने के लिए) और अन्य स्थानों पर मैं मॉड्यूल random.random
का उपयोग करता हूं।पायथन
क्या कोई मुझे दोनों के बीच प्रमुख अंतर बता सकता है? दो में से प्रत्येक के लिए डॉक्टर वेबपेज को देखते हुए मुझे लगता है कि numpy.random
में अभी और अधिक विधियां हैं, लेकिन मुझे स्पष्ट नहीं है कि यादृच्छिक संख्याओं की पीढ़ी अलग कैसे है।
कारण मैं पूछ रहा हूं क्योंकि मुझे डीबगिंग उद्देश्यों के लिए मेरे मुख्य कार्यक्रम को बीज करने की आवश्यकता है। लेकिन यह तब तक काम नहीं करता जब तक कि मैं आयात करने वाले सभी मॉड्यूल में एक ही यादृच्छिक संख्या जेनरेटर का उपयोग नहीं करता, क्या यह सही है?
इसके अलावा, मैंने यहां एक और पोस्ट में पढ़ा है, numpy.random.seed()
का उपयोग न करने के बारे में एक चर्चा, लेकिन मुझे वास्तव में समझ में नहीं आया कि यह इतना बुरा विचार क्यों था। अगर कोई मुझे बताए कि यह मामला क्यों है तो मैं वास्तव में सराहना करता हूं।
एक दूर से संबंधित टिप्पणी के रूप में, यह * न *, का उपयोग करने के बाद से Mersenne ट्विस्टर एन्ट्रापी क्रिप्टोग्राफिक के लिए पर्याप्त के यादृच्छिक दृश्यों का उत्पादन नहीं करता (और कभी कभी आवश्यक है कुछ असामान्य वैज्ञानिक) उद्देश्यों। उन दुर्लभ मामलों में, आपको अक्सर [Crypto.Random] की आवश्यकता होती है (https://www.dlitz.net/software/pycrypto/apidoc/Crypto.Random.random-module.html), जो ओएस विशिष्ट एन्ट्रॉपी स्रोतों का उपयोग करने में सक्षम है अकेले 'random.random' से उपलब्ध की तुलना में बहुत अधिक गुणवत्ता के गैर-निर्धारिती यादृच्छिक अनुक्रम उत्पन्न करने के लिए। हालांकि, आपको आमतौर पर इसकी आवश्यकता नहीं होती है। – SingleNegationElimination
धन्यवाद हनीले। आपकी अंतर्दृष्टि वास्तव में बहुत उपयोगी थी! यह पता चला है कि मैं केवल एक ही यादृच्छिक संख्या जनरेटर का उपयोग करने से दूर नहीं जा सकता, (जो यादृच्छिक होने की आवश्यकता है क्योंकि यादृच्छिक वितरण द्विपक्षीय वितरण नहीं करता है) क्योंकि मेरे प्रोग्राम के कुछ हिस्सों में एक और प्रोग्राम है जो यादृच्छिक उपयोग करता है। मुझे दो जेनरेटर बीज देना होगा। – Laura
"यदि आप जानते हैं कि अब आपके पास कौन सा नंबर है, तो पूर्ण निश्चितता के साथ भविष्यवाणी करना संभव है कि अगला नंबर कौन सा होगा।" मुझे लगता है कि इस कथन को कुछ स्पष्टीकरण की आवश्यकता हो सकती है। इसका मतलब यह है कि यदि आप जनरेटर के * आंतरिक राज्य * को जानते हैं तो आप अनुक्रम को पुन: उत्पन्न कर सकते हैं - जो आप जनरेटर के बीज करते हैं तो आप यही करते हैं। जनरेटर से एक एकल संख्या आउटपुट को देखते हुए आप अगले नंबर की भविष्यवाणी नहीं कर सकते हैं। अवधि इतनी बड़ी है कि आपको छद्म-यादृच्छिक अनुक्रम पर कहां गणना करनी चाहिए और इस प्रकार अगले की भविष्यवाणी करने से पहले आपको संख्याओं के लंबे अनुक्रम की आवश्यकता होगी। –