मैं खुद उत्सुक था, इसलिए मैं आगे बढ़ गया और इसका परीक्षण करने के लिए program लिखा। कोड को संकलित करने के लिए आपको Crypto++ की आवश्यकता होगी।
अस्वीकरण: जब क्रिप्टोग्राफी की बात आती है, या यहां तक कि सामान्य रूप से गणित भी है, तो मुझे पैर में खुद को शूट करने के लिए पर्याप्त पता है। तो, निम्नलिखित परिणामों को नमक के अनाज के साथ लें और ध्यान रखें कि मेरे पास केवल उन औजारों का एक सरसरी ज्ञान है जिसका मैं उपयोग कर रहा हूं।
मैंने केवल तीन सबस्ट्रिंग का नमूना लिया: पहले 8 बाइट्स, मध्य 8 बाइट्स, और अंतिम 8 बाइट्स। लंबी कहानी छोटी, वे समान रूप से यादृच्छिक हैं।
हालांकि, एक छोटे नमूना स्थान का उपयोग करते समय, ऐसा प्रतीत होता है कि अंतिम 8 बिट थोड़ा और यादृच्छिक हैं। नमूना स्थान जितना बड़ा होगा, लगभग तीन सबस्ट्रिंग्स पूर्ण यादृच्छिकता तक पहुंचेंगी।
1000 पुनरावृत्तियों:
First: 0.995914
Middle: 0.996546
Last: 0.998104
5000 पुनरावृत्तियों:
First: 0.998387
Middle: 0.998624
Last: 0.999501
10000 पुनरावृत्तियों:
First: 0.999614
Middle: 0.999457
Last: 1
30000 पुनरावृत्तियों:
012,351,
First: 1
Middle: 1
Last: 1
"अनियमितता" क्रिप्टो ++ के MaurerRandomnessTest वर्ग से मापा जाता है। संदर्भ के लिए, उपरोक्त कोड से संकलित निष्पादन योग्य में 0.632411
का यादृच्छिकता मूल्य है और प्रोजेक्ट गुटेनबर्ग से डाउनलोड शेक्सपियर के मैकबेथ की एक प्रति 0.566991
का यादृच्छिक मूल्य है।
मेरी राय में, "यादृच्छिक" सही शब्द नहीं है। हैश फ़ंक्शंस उतने निर्धारक हैं जितना वे प्राप्त करते हैं; इसमें कोई यादृच्छिकता नहीं है। आपने शायद कहा था कि हैश के एक सबस्ट्रिंग में मूल के रूप में एक ही संलयन प्रतिरोध होता है (निश्चित रूप से अलग-अलग लंबाई के लिए लेखांकन)। – Jens
मैं बस इस सवाल से पूछने वाला था .. – insaner