求均值和均方差不溢出的方法
2016-10-21 13:40
141 查看
均值公式: x¯=∑ni=1xin
求解思路:
x¯0=0
for i = 1 : n
x¯i=x¯i−1+(xi−x¯i−1)i
end
方差公式:X=∑ni=1(xi−x¯)2n−1=∑ni=1x2in−1−n∗x¯2n−1
求解思路:
X2=x21+x22
for i = 3 : n
Xi=Xi−1+(x2i−Xi−1)i−1
end
代码实现:
方法一:
方法二:
测试代码:
求解思路:
x¯0=0
for i = 1 : n
x¯i=x¯i−1+(xi−x¯i−1)i
end
方差公式:X=∑ni=1(xi−x¯)2n−1=∑ni=1x2in−1−n∗x¯2n−1
求解思路:
X2=x21+x22
for i = 3 : n
Xi=Xi−1+(x2i−Xi−1)i−1
end
代码实现:
方法一:
#include<iostream> #define POW(x) ((x)*(x)) using namespace std; double GetAvr(int* a, int n) { double avr = 0; for (int i = 0; i < n; i++) { avr += (a[i] - avr) / (i + 1); } return avr; } double GetVar(int *a, int n, double avr) { double var = POW(a[0] - avr) + POW(a[1] - avr); for (int i = 2; i < n; i++) { var += (POW(a[i] - avr) - var) / (i); } return var; }
方法二:
void GetAvrandVar(int *a, int n, double& avr, double& var) { avr = 0, var = 0; for (int i = 0; i < n; i++) { avr += (a[i] - avr) / (i + 1); if (i < 2) { var += POW(a[i]); } else { var += (POW(a[i]) - var) / i; } } var -= n*POW(avr) / (n - 1); }
测试代码:
int main() { int a[5] = { 1,22, 77, 7, 8 }; double avr, var; double avr1, var1; avr = GetAvr(a, 5); var = GetVar(a, 5, avr); GetAvrandVar(a, 5, avr1, var1); cout << "avr1: " << avr1 << endl; cout << "avr2: " << var1 << endl; cout << "avr: " << avr << endl; cout << "var: " << var << endl; system("pause"); }
相关文章推荐
- MATLAB中均值、方差、均方差的计算方法
- MATLAB中均值、方差、均方差的计算方法
- MATLAB中均值、方差、均方差的计算方法
- MATLAB中均值、方差、均方差的计算方法
- MATLAB中均值、方差、均方差的计算方法
- MATLAB中均值、方差、均方差的计算方法
- MATLAB中均值、方差、均方差的计算方法
- 溢出文本显示省略号的方法
- 溢出漏洞扫描技术方法与实现(科普)
- TOMCAT内存溢出之解决方法
- 在AIX上用IBM的JVM,内存溢出时默认地会产生javacore文件(关于cpu的)和heapdump文件(关于内存的)。手动产生堆栈文件的方法是使用kill -3
- 溢出漏洞扫描技术方法与实现
- 总提示[Microsoft][ODBC Excel Driver] 数值字段溢出官方解决方法
- CSS溢出文本显示省略号的详细方法[CSS小知識]
- Tomcat 内存溢出 解决方法
- Serv-U防溢出提权攻击解决设置方法
- OCI-22053: 溢出错误的原因和解决方法
- 绕过部分杀毒软件溢出防护shellcode的方法!
- 防止 Solaris 溢出的方法
- asp cint clng的范围与防止cint和clng的溢出解决方法大全