मान लीजिए कि हमारे पास एन संख्याएं हैं (पूर्णांक, फ्लोट्स, जो कुछ भी आप चाहते हैं) और अपने अंकगणितीय माध्य को ढूंढना चाहते हैं। सरलतम विधि मूल्यों की संख्या से सभी मूल्यों और भाग कर योग करने के लिए है:क्या अंक()/एन से अंकगणितीय माध्य "बेहतर" खोजने का कोई तरीका है?
def simple_mean(array[N]): # pseudocode
sum = 0
for i = 1 to N
sum += array[i]
return sum/N
यह ठीक काम करता है, लेकिन बड़ी पूर्णांकों की आवश्यकता है। यदि हम बड़े पूर्णांक नहीं चाहते हैं और हम गोल करने वाली त्रुटियों के साथ ठीक हैं, और एन दो की शक्ति है, तो हम 'divide-and-conquer' का उपयोग कर सकते हैं: ((a+b)/2 + (c+d)/2)/2 = (a+b+c+d)/4
, ((a+b+c+d)/4 + (e+f+g+h)/4)/2 = (a+b+c+d+e+f+g+h)/8
, आदि।
def bisection_average(array[N]):
if N == 1: return array[1]
return (bisection_average(array[:N/2])+bisection_average(array[N/2:]))/2
कोई अन्य तरीका?
पीएस। playground for lazy
दिलचस्प है, लेकिन 'राउंडिंग त्रुटियों के साथ ठीक' के बारे में मुझे थोड़ा चिंतित है। मैं कोई त्रुटि के साथ एक विधि पसंद करेंगे। – pavium
दूसरे विचारों पर, मैं सुबह में वापस आऊंगा और मेरा जवाब मिटा दूंगा अगर मैं अभी भी खुश हूं कि यह बहुत गलत नहीं है ... –
@ पैवियम: यदि आप कोई त्रुटि नहीं चाहते हैं, तो आपको गणना करने की आवश्यकता है हाथ से यह – MusiGenesis