आपने पहले ही कई सही अवलोकन किए हैं!
जब तक आप दोनों रैंडम जेनरेटर्स को सीड करना चाहते हैं, तब तक संभवत: एक जनरेटर या दूसरे को चुनना लंबे समय में सरल होगा। लेकिन अगर आपको दोनों का उपयोग करने की आवश्यकता है, तो हाँ, आपको उन दोनों को भी बीजने की आवश्यकता होगी, क्योंकि वे एक दूसरे से स्वतंत्र रूप से यादृच्छिक संख्या उत्पन्न करते हैं।
के लिए numpy.random.seed()
, मुख्य कठिनाई यह है कि यह थ्रेड-सुरक्षित नहीं है - अर्थात, यदि आपके पास निष्पादन के कई अलग-अलग धागे हैं , तो इसका उपयोग करना सुरक्षित नहीं है , क्योंकि यह काम करने की गारंटी नहीं है यदि दो अलग-अलग थ्रेड्स एक ही समय में फ़ंक्शन निष्पादित कर रहे हैं। यदि आप थ्रेड्स का उपयोग नहीं कर रहे हैं, और यदि आप यथोचित अपेक्षा कर सकते हैं कि आपको भविष्य में इस तरह से अपने कार्यक्रम को फिर से लिखने की आवश्यकता नहीं है, तो आपको numpy.random.seed()
ठीक होना चाहिए। यदि आपको संदेह करने का कोई कारण है कि आपको भविष्य में थ्रेड्स की आवश्यकता हो सकती है, तो यह लंबे समय तक सुझाव के रूप में करने के लिए सुरक्षित है, और कक्षा का स्थानीय उदाहरण बनाने के लिएnumpy.random.Random
। जहां तक मैं बता सकता हूं, random.random.seed()
थ्रेड-सेफ है (या कम से कम, मुझे इसके विपरीत कोई सबूत नहीं मिला है)।
numpy.random
पुस्तकालय आमतौर पर वैज्ञानिक अनुसंधान में इस्तेमाल कुछ अतिरिक्त संभाव्यता वितरण, साथ ही यादृच्छिक डेटा की सरणियों पैदा करने के लिए सुविधा कार्यों के एक जोड़े हैं। random.random
पुस्तकालय थोड़ा और हल्के है, और ठीक हो सकता है अगर आप वैज्ञानिक अनुसंधान या आँकड़ों में काम के अन्य प्रकार नहीं कर रहे हैं।
अन्यथा, वे दोनों अपने यादृच्छिक संख्याओं को उत्पन्न करने के लिए मेरसेन ट्विस्टर अनुक्रम का उपयोग करते हैं, और वे दोनों पूरी तरह से निर्धारक हैं - अर्थात, यदि आप जानकारी के कुछ प्रमुख बिट्स जानते हैं, तो यह निश्चित रूप से पूर्ण निश्चितता के साथ भविष्यवाणी करना संभव है कि आगे क्या नंबर आएगा । इस कारण से, कोई गंभीर क्रिप्टोग्राफ़िक उपयोगों के लिए न तो numpy.random और न ही random.random उपयुक्त है । लेकिन क्योंकि यह क्रम बहुत लंबा है, दोनों ही उन मामलों में यादृच्छिक संख्या उत्पन्न करने के लिए ठीक हैं, जहां आप अपने डेटा को रिवर्स-इंजीनियर करने की कोशिश कर रहे लोगों के बारे में चिंतित नहीं हैं। यादृच्छिक मूल्य को वरीयता देने का यह भी कारण है - यदि आप हर बार एक ही स्थान पर शुरू करते हैं, तो आपको हमेशा यादृच्छिक संख्याओं का क्रम मिलेगा!
एक तरफ ध्यान दें, यदि आप करते क्रिप्टोग्राफिक स्तर अनियमितता की जरूरत है, आप का उपयोग करना चाहिए रहस्य मॉड्यूल, या की तरह कुछ Crypto.Random यदि आप एक अजगर संस्करण अजगर 3.6 से पहले उपयोग कर रहे हैं।
random.random
अकेले से उपलब्ध उच्च गुणवत्ता के गैर-निर्धारक यादृच्छिक अनुक्रम उत्पन्न करने के लिए ओएस विशिष्ट एन्ट्रापी स्रोतों का उपयोग करने में सक्षम है । आपको आमतौर पर इसकी आवश्यकता नहीं है, हालांकि।