मैं जैसे मैं जिस तरह से इस समस्या को overthinking कर रहा हूँ लगता है, लेकिन यहाँ वैसे भी जाता है ...अपेक्षित संख्या
मैं अपनी आंतरिक सरणी में एम स्लॉट के साथ एक हैश तालिका है। मुझे हैश टेबल में एन तत्वों को सम्मिलित करने की आवश्यकता है। मान लीजिए कि मेरे पास हैश फ़ंक्शन है जो यादृच्छिक रूप से प्रत्येक स्लॉट के लिए समान संभावना के साथ एक स्लॉट में तत्व डालता है, हैश टकराव की कुल संख्या का अनुमानित मूल्य क्या है?
(क्षमा करें कि यह प्रोग्रामिंग प्रश्न से अधिक गणित प्रश्न है)।
संपादित करें: यहां कुछ कोड है जो मुझे पायथन का उपयोग करके अनुकरण करना है। मुझे संख्यात्मक उत्तर मिल रहे हैं, लेकिन इसे एक सूत्र में सामान्यीकृत करने और इसे समझाते हुए परेशानी हो रही है।
import random
import pdb
N = 5
M = 8
NUM_ITER = 100000
def get_collisions(table):
col = 0
for item in table:
if item > 1:
col += (item-1)
return col
def run():
table = [0 for x in range(M)]
for i in range(N):
table[int(random.random() * M)] += 1
#print table
return get_collisions(table)
# Main
total = 0
for i in range(NUM_ITER):
total += run()
print float(total)/NUM_ITER
आप "ट्रिपलेट" टकराव को कैसे मापना चाहते हैं? – wildplasser
जो भी मुझे लगता है सबसे ज्यादा समझ में आता है। तो मैं इसे दो टकराव के रूप में गिनने के साथ जाऊंगा (पहले के बाद जोड़ा गया एक नया तत्व) – numegil
सबसे अच्छा उपाय सभी वस्तुओं को पुनर्प्राप्त करने के लिए काम की मात्रा प्रतीत होता है, जो 'SUM (x * (x + 1)/2) 'एक्स के साथ बाल्टी में वस्तुओं की संख्या है, और राशि सभी बाल्टीओं पर है। किसी स्रोत को संदर्भित करने के लिए – wildplasser