0
$\begingroup$

I would like to calculate the average of a a set of numbers without knowing the sum of the set. In other words, I want to calculate the average with knowing as little information as possible.

Note: I do not want to use $\frac{sum}{total}$

I am using looping (induction, I believe) to calculate the average.

I would like to keep track of only one variable, say x, which is equal to the current accuracy.

Is it possible to calculate x without knowing sum?

In summary: seeking how can you calculate the new average knowing only the number of elements and the current average.

$\endgroup$
1
$\begingroup$

Notice that sum is the current average times the current number of elements...

Suppose that $a(n)$ is the average of the first $n$ elements of the set and $e$ is the $n+1^{\text{st}}$ element. Then $$ a(n+1) = \frac{n a(n) + e}{n+1} \text{.} $$ Of course, all this does is reconstruct sum, update it with the new element and then divide to get the new running average.

$\endgroup$
1
$\begingroup$

You need to keep track of two numbers. If you don't you don't know how much a new number changes the average. Say the average of the first bunch is $100$ and you get a new one of $1$. If the first bunch is just one, the new average is $50.5$. If the first batch is $100$ the new average is about $99$.

You can do it in a loop if you keep track of the current average $a$ and the number of items seen so far $n$. This hides the fact that the total so far is $an$. If you get a new value $d$ you can update the average to be $\frac {an+d}{n+1}$ and the count to be $n+1$. In a sense this is doing the same thing, but you don't have to keep the whole list available.

$\endgroup$
1
$\begingroup$

Let us start with an example.

Find the average of $$\{ 3,5,6,2\}$$

$$3+5=8,8/2 = 4$$

$$2(4)+6 =14, 14/3 = 14/3$$

$$3(14/3)+2=16, 16/4=4$$

Which is the final average.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.