मेरे पास विभिन्न मुख्य फ़ाइलों (विभिन्न सिमुलेशन के लिए) के साथ एक प्रोजेक्ट है। जब मैं मेनफाइल में से किसी एक को चलाता हूं, तो इसे बीज को यादृच्छिक (और numpy.random) पर सेट करना चाहिए, और प्रोजेक्ट के सभी मॉड्यूल को उस बीज का उपयोग करना चाहिए।मॉड्यूल (पायथन में) के बीच यादृच्छिक के बीज को साझा करने का कोई अच्छा तरीका है?
मुझे ऐसा करने का कोई अच्छा तरीका नहीं मिला है। मैं इस के साथ एक फ़ाइल globals.py है:
import random
myRandom=None
def initSeed(seed):
global myRandom
myRandom =random.Random(seed)
तो एक मुख्य से
मुझे क्या करना:
if __name__ == "__main__":
seed=10
globals.initSeed(seed)
...
फिर मॉड्यूल है कि मुख्य कॉल, मैं क्या में
:
from globals import myRandom
लेकिन myRandom में मान है मॉड्यूल में कोई नहीं (भले ही मैंने इसे मुख्य रूप में संशोधित किया हो!)। क्यों, और इसे कैसे ठीक करें? क्या कोई अच्छा रास्ता है?
यदि आप इसे 'वैश्विक' का उपयोग करके करना चाहते हैं, तो चर का उपयोग करने वाले सभी कार्यों में चर को 'वैश्विक' घोषित किया जाना चाहिए। आप कक्षाओं और उप-वर्गों का उपयोग कर सकते हैं लेकिन आप फ़ाइल को मान भी लिख सकते हैं। मुझे लगता है कि आप अपने वर्तमान सेटअप में 'globals.myRandom' के माध्यम से चर 'myRandom' को एक्सेस करेंगे। Btw। 'ग्लोबल्स' पहले से ही पाइथन में परिभाषित किया गया है, इसलिए फ़ाइल नाम को किसी और चीज़ में बदलें ('ग्लोब' नहीं - भी लिया गया) – jDo
' इसे बीज को यादृच्छिक रूप से सेट करना चाहिए और प्रोजेक्ट के सभी मॉड्यूल को उस बीज का उपयोग करना चाहिए। 'आपके जैसे ध्वनि सिंगलेट की तलाश में? – Cyrbil
मुझे आश्चर्य है कि आपका उपयोग-केस परिदृश्य क्या है – yedpodtrzitko