2010-02-06 15 views
9

यह कक्षा अपने रैखिक संगत सूत्र में 48 बिट बीज का उपयोग क्यों करती है? मुझे 32 या 64 की उम्मीद होगी ...क्यों उपयोग में 48 बिट बीज रैंडम क्लास?

मुझे पता है कि 32 बिट मानों के लिए पूछे जाने पर यह उच्च ऑर्डर बिट्स लेता है। लेकिन क्यों केवल 16 और अतिरिक्त बिट्स? क्या यह एक "यादृच्छिक" पसंद था?

+1

यह लिंक http://www.javamex.com/tutorials/random_numbers/java_util_random_algorithm.shtml का कहना है कि उपयोग किए गए पैरामीटर यूनिक्स रैंड 48 जनरेटर से लिया जाता है जो 48 बिट्स का भी उपयोग करता है। यह जानना दिलचस्प होगा क्यों 48? – sateesh

उत्तर

4

आपको उत्पादन के बिट्स की तुलना में राज्य के अधिक बिट्स की आवश्यकता है, क्योंकि एलसीजी की प्रकृति ऐसी है कि राज्य की निम्न-आदेश बिट्स बिल्कुल यादृच्छिक नहीं हैं। तो यदि आप 32-बिट आउटपुट चाहते हैं, तो आपको 32 से अधिक बिट्स की आवश्यकता है।

64 के बजाय 48 का उपयोग क्यों करें? क्योंकि 48 पर्याप्त है, और आप दशकों पहले को डिजाइन कर रहे हैं, इसलिए सख्ती से आवश्यक संसाधनों से अधिक संसाधनों का उपयोग करने से बचने के अच्छे कारण हैं।

1

इसके पीछे गणित संख्या सिद्धांत और छद्म यादृच्छिक संख्या जेनरेटर की गणितीय परिभाषा से आता है। यह निश्चित रूप से एक "यादृच्छिक" (मनमाना के रूप में व्याख्या) पसंद नहीं है।

कंप्यूटर पर एक यादृच्छिक संख्या जनरेटर वास्तव में एक सच्चे छद्म यादृच्छिक संख्या जनरेटर होने का प्रयास कर रहा है।

आप एक छद्म यादृच्छिक संख्या जेनरेटर के बारे में एक विस्तार समारोह के रूप में सोच सकते हैं जो seed इनपुट लेता है और उसके बाद एक संख्या G(seed) आउटपुट करता है।

आदर्श रूप से आप अपने छद्म यादृच्छिक संख्या जेनरेटर को एक वास्तविक यादृच्छिक संख्या जनरेटर से अलग करने के लिए चाहते हैं, लेकिन आपको यह भी पता होना चाहिए कि आपका छद्म यादृच्छिक संख्या जनरेटर कुशलता से नमूना (बहुपद समय) और निर्धारक होना चाहिए (जिसका अर्थ है कि यह बिल्कुल वही है धारा एक ही इनपुट बीज दिया)।

तो केवल 32 बिट बीज स्पेस होने का मतलब है कि एक विरोधी यह निर्धारित करने की इच्छा रखता है कि आपकी स्ट्रीम वास्तव में यादृच्छिक है (या यादृच्छिक संख्या जनरेटर के आधार पर आपके एन्क्रिप्शन एल्गोरिदम को तोड़ें) केवल 32 बिट कीस्पेस (बीज स्पेस)) और आपके प्रदत्त "यादृच्छिक" स्ट्रीम के मुकाबले जेनरेटर के आउटपुट का नमूना लें और देखें कि यह मेल खाता है या नहीं। 16 और बिट्स जोड़ना कुंजी (बीज) अंतरिक्ष में महत्वपूर्ण अधिक सीमा जोड़ता है, जिससे सभी संभावित कुंजी (बीजों) को गिनना बहुत मुश्किल हो जाता है।

क्यों पूर्ण 64 बिट्स के लिए नहीं जाना है ... शायद जब एल्गोरिदम लागू किया जा रहा था तो हार्डवेयर प्रोसेसिंग क्षमताओं ने 64 बिट ऑपरेशंस को कुशलतापूर्वक समर्थन नहीं दिया क्योंकि वे आज आधुनिक x64 आधारित प्रोसेसर पर किए जा सकते हैं ताकि वे रुक जाए 48.

1

पर एक Linear Congruential Generator (LCG) तीन मापदंडों एक, और मीटर की विशेषता है। केवल certain combinations अधिकतम अवधि दें, और सभी समान रूप से अच्छी तरह से अध्ययन नहीं कर रहे हैं। विकल्प शायद जटिलता और इच्छित उपयोग के बीच सामान्य व्यापार-बंद से प्रभावित था। सौभाग्य से, कक्षा विरासत के लिए उचित रूप से अच्छी तरह से डिज़ाइन की गई है, इसलिए other implementations संभव है।

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