两数平均数
例:已知两正数 a a a, b b b ( a < b a<b a<b),求平均数?
常规法
a
v
e
r
=
a
+
b
2
aver=\frac{a+b}{2}
aver=2a+b
缺点:a、b两数过大时,求和容易产生溢出。
求差法
a v e r = a + b − a 2 aver=a+\frac{b-a}{2} aver=a+2b−a
多数平均数
例:有数组Val[0]、Val[0]、Val[1]、…… 、Val[n-1],求平均数?
常规法
a
v
e
r
a
g
e
=
V
a
l
[
0
]
+
V
a
l
[
1
]
+
…
…
+
V
a
l
[
n
−
1
]
n
average=\frac{Val[0] + Val[1] + …… + Val[n-1]}{n}
average=nVal[0]+Val[1]+……+Val[n−1]
缺点:n过大时,求和容易产生溢出。
求差法
double ever;
double average = Val[0];
for (i = 1; i < n; i++)
average = average + (Val[i] - average) / (i + 1);