मैं इसफ्लाई (औसत चलती औसत) पर औसत कुशलतापूर्वक गणना कैसे करें?
n=1;
curAvg = 0;
loop{
curAvg = curAvg + (newNum - curAvg)/n;
n++;
}
मुझे लगता है कि इस तरह से की मुख्य आकर्षण हैं के साथ आते हैं:
- यह बड़ी संख्या से बचा जाता है (और संभव अतिप्रवाह अगर आप योग और फिर विभाजित)
- आप एक रजिस्टर को बचाने (नहीं योग को स्टोर करने की आवश्यकता है)
समस्या को हल करने में समस्या हो सकती है - लेकिन मुझे लगता है कि आमतौर पर गोलियों और गोलियों की संतुलित संख्या होगी ताकि त्रुटि नाटकीय रूप से समेकित न हो।
क्या आपको इस समाधान में कोई समस्या है? क्या आपके पास कोई बेहतर प्रस्ताव है?
मुझे आपके फॉर्मूला को समझ में नहीं आता है। अगले '1 2' और' 3' के लिए, आप 'curAvg = 1.5 + (3 - 1.5)/2 = 1.5 + 0.75 = 2.25' करेंगे, जो गलत होगा? – IVlad
इसी प्रकार का प्रश्न: http://stackoverflow.com/questions/12636613/how-to-calculate-moving-Average-without-keeping-the-count-and-data- कुल –
@IVlad: लूप 1: curAvg = 0 + (1-0)/1 = 1; एन = 2
लूप 2: curAvg = 1 + (2-1)/2=1.5; एन = 3
पाश 3: curAvg = 1.5 + (3-1.5)/3 = 2; n = 4 –