2015-01-15 14 views
5

में मैं निम्नलिखित तरीके से यादृच्छिक राज्यों बोने के लिए तार के हैशिंग उपयोग कर रहा हूँ:नियतात्मक हैशिंग अजगर 3

context = "string" 
seed = hash(context) % 4294967295 # This is necessary to keep the hash within allowed seed values 
np.random.seed(seed) 

यह दुर्भाग्य है (मेरे उपयोग के लिए) पायथन 3.3 में और ऊपर रन के बीच गैर नियतात्मक। मैं जानता हूँ कि कि मैं नियतिवाद हासिल करने के लिए एक पूर्णांक मान के लिए PYTHONHASHSEED वातावरण चर सेट कर सकते हैं कि, लेकिन मैं शायद कुछ है कि थोड़ा कम hacky लगता है पसंद करते हैं, और पूरी तरह से अतिरिक्त सुरक्षा यादृच्छिक हैशिंग से जोड़ा उपेक्षा नहीं होंगे। सुझाव?

उत्तर

5

उद्देश्य के लिए निर्मित हैश फंक्शन का प्रयोग करें। zlib.adler32() एक उत्कृष्ट पसंद है; वैकल्पिक रूप से, अधिक विकल्पों के लिए hashlib मॉड्यूल की जाँच करें।

+0

बिल्कुल सही है, धन्यवाद! –

0

पाइथन के अंतर्निर्मित hash को निर्धारित करने के लिए आंतरिक रूप से हैकी है। आप hackitude से बचना चाहते हैं, एक अलग हैशिंग समारोह का उपयोग करें - उदाहरण के https://docs.python.org/2/library/hashlib.html देखते हैं।

संबंधित मुद्दे