2011-11-22 7 views
6

शीर्षक मूल रूप से यह सब कहता है। मैंने गुगलिंग की कोशिश की है लेकिन झूठी सकारात्मक भार का भार वापस कर दिया है। मुझे लगता है कि मैं बस सोच रहा हूं कि इन दो विशिष्ट संख्याओं के पीछे एक निश्चित तर्क था या क्या वे आसानी से संख्याओं के कई अन्य सेट कर सकते थे?क्या कोई विशेष कारण है कि एक्लिप्स उत्पन्न बराबर बुलियन के लिए 1231 और 1237 के मानों का उपयोग करता है?

संपादित करें: और, के बाद से नंबर का स्रोत उत्तर दिया गया है, किसी भी कारण है कि बूलियन hashCode विधि के लेखकों उन संख्याओं का इस्तेमाल किया (उस के अलावा वे प्रधानमंत्री रहे हैं)? क्या प्राइम नंबरों का कोई अन्य सेट भी काम करेगा?

+4

वे दोनों रूढ़ अंक हैं, कि अगर किसी भी मदद के लिए है। की –

+0

संभव डुप्लिकेट [Boolean.hashCode()] (http://stackoverflow.com/questions/3912303/boolean-hashcode) – assylias

उत्तर

4

हैश कार्यों collisions से ग्रस्त हैं। प्रमुख संख्याओं का उपयोग करके टक्करों की संख्या को कम किया जा सकता है (प्रमुख संख्याओं के कारकों के बारे में सोचें)। 1231 और 1237 दोनों प्रमुख संख्याएं हैं।

/E1
थोड़ा और अधिक अनुसंधान करने के बाद मैं this भर में आया था:

के बाद से वे सबसे शायद hashtable आकार के साथ कोई आम divisors (जब तक कि प्रधानमंत्री खुद hashtable आकार divises) होगा, सामान्य हैशटेबल कार्यान्वयन में टकराव की संभावना कम हो जाएगी।

+0

तो इन दोनों के बारे में कुछ खास नहीं है, बस वे प्रधान हैं? तो, 11 और 17 उतना ही अच्छा होगा? – AHungerArtist

+0

@AHungerArtist प्रमुख जितना बड़ा होगा, सुरक्षित कार्य होगा। जहां तक ​​मुझे पता है, इसकी जड़ें क्रिप्टोग्राफी में हैं जहां बड़ी प्राइम संख्याओं को कोड के लिए बड़ी (और काफी सुरक्षित) कुंजी उत्पन्न करने के लिए एक साथ गुणा किया गया था। – Jeffrey

+2

@AHungerArtist जैसा कि यह पता चला है, एक टकराव होने से पहले हैशटेबल जितना बड़ा होगा उतना बड़ा होगा। इस स्थिति में, टकराव होने से पहले हैशटेबल में 2462 (2 * 1231) बाल्टी होगी। क्यों जावा के डेवलपर्स ने चुना * इन * प्राइम्स उनके लिए सबसे अच्छा प्रश्न होगा। – Jeffrey

6

ये संख्या आधिकारिक Boolean API से आते हैं।

+1

कि अभी भी करने के लिए जहां उन से और क्यों आया के रूप में सवाल भीख माँगता। – AHungerArtist

+4

सहमत हुए, लेकिन यही वजह है कि एक्लिप्स उत्पन्न बराबर उनका उपयोग करता है। –

1

वे बूलियन hashCode विधि से आते हैं। वे केवल 2 बड़े मनमाना प्रमुख संख्या हैं। Boolean.hashCode()

3

वे जाहिर तौर पर जावा कोर Boolean class hashCode() results पर कॉल करने वाले शॉर्ट-काटने वाले हैं।

रिटर्न: पूर्णांक 1231 पूर्णांक का प्रतिनिधित्व करता है; यदि यह ऑब्जेक्ट झूठा प्रतिनिधित्व करता है तो पूर्णांक 1237 देता है।

एक कहीं अधिक में गहराई से चर्चा (यद्यपि कि अभी suppositions और मुश्किल नहीं है और तेजी से तथ्यों के साथ समाप्त होता है) here पाया जा सकता है।

1

यह अभी भी सवाल पूछता है कि वे कहां से आए और क्यों।

शायद यह किसी के कार्यालय से स्टाफ कैफेटेरिया में चरणों की संख्या का सबसे अच्छा अनुमान है। या किसी की लड़की-मित्र का फोन नंबर। कौन जाने।

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

साथ चल चलें ...