मैं एक हैश फ़ंक्शन पारिवारिक जनरेटर ढूंढ रहा हूं जो पैरामीटर के सेट दिए गए हैश फ़ंक्शन का एक परिवार उत्पन्न कर सकता है। मुझे अब तक ऐसा कोई जनरेटर नहीं मिला है। क्या hashlib
पैकेज के साथ ऐसा करने का कोई तरीका है?हैश फ़िथन में परिवार जनरेटर
h1 = hash_function(1)
h2 = hash_function(2)
...
और h1
और h2
अलग हैश फंक्शन होगा:
उदाहरण के लिए मैं कुछ ऐसा करना चाहते हैं।
आप में से जो लोग इसके बारे में जानते हैं, मैं एक बहुत बड़े डेटासेट पर एक मिनी-हैशिंग एल्गोरिदम लागू करने की कोशिश कर रहा हूं।
असल में, मेरे पास किसी दिए गए दस्तावेज़ के लिए सुविधाओं का एक बहुत बड़ा सेट (100 मिलियन से 1 बिलियन) है, और मुझे सुविधाओं के इस सेट के लिए 1000 से 10000 विभिन्न यादृच्छिक क्रमपरिवर्तन बनाने की आवश्यकता है।
मैं यादृच्छिक क्रमपरिवर्तन स्पष्ट रूप से निर्माण करने के लिए इतना तकनीक मैं में उपयोग करना चाहते हैं नहीं करना चाहती है:
- एक हैश समारोह
h
पैदा करते हैं और मानते हैं कि दो सूचकांकr
औरs
r
के लिए क्रमशःs
पर क्रमशःh(r) < h(s)
पर दिखाई देता है और यह 100 से 1000 विभिन्न हैश फ़ंक्शंस के लिए करता है।
क्या कोई ज्ञात पुस्तकालय हैं जिन्हें मैं याद कर सकता हूं? या हैश के परिवारों को पाइथन के साथ उत्पन्न करने का कोई मानक तरीका जिसे आप जानते हो?
इस उत्तर के लिए धन्यवाद। ऐसा लगता है कि यह बहुत अच्छा काम करता है। हैश फ़ंक्शंस का उपयोग करने के लिए कोई विशेष? दक्षता ? कुछ अर्थों में बहुत अलग अनुमानित क्रमपरिवर्तन पैदा करेगा? –
बिल्ट-इन 'हैश' सभ्य और सुंदर कुशल है - परिवार के भीतर इंडेक्स से (लेकिन पर्याप्त अराजक तरीके से) पर निर्भर करता है, यह एक हैश फ़ंक्शन को चालू करने के लिए एक और सभ्य/कुशल तरीका लगता है एक परिवार में यदि गति कोई समस्या नहीं है तो आप मजबूत (क्रिप्टो-गुणवत्ता) हैशिंग का उपयोग कर सकते हैं, मुझे लगता है - यह संभवतः आपको उच्च गुणवत्ता प्रदान करेगा (न तो हैश और न ही यादृच्छिक क्रिप्टो-गुणवत्ता है और इस प्रकार न तो उनका एक्सओआर ;-) है लेकिन गति प्रभाव वास्तव में है बड़ा (परिमाण के आदेश ...)। –
धन्यवाद। असल में, मुझे विश्वास है कि गति मेरे लिए यहां महत्वपूर्ण होगी। एकमात्र "गुणवत्ता" मैं देख रहा हूं कि हैश फ़ंक्शन मेरे मूल प्रश्न में वर्णित प्रक्रिया द्वारा "अलग-अलग" यादृच्छिक क्रमपरिवर्तन उत्पन्न करेंगे (मुझे यकीन नहीं है कि यह कैसे मापें ...)। फिर, आपके महान उत्तर के लिए बहुत बहुत धन्यवाद। –