施工门楼文字:方差的计算

来源:百度文库 编辑:神马品牌网 时间:2024/04/29 21:23:06

b的:

function fangcha(n,a(X))
sum=0
sum2=0
for i=1 to n
sum=sum+a(i)
next
sum=sum/n '平均数
for i=1 to n
sum2=sum2+(a(i)-sum)+(a(i)-sum) '样本里的数-平均数 的平方 的和,
next
fangcha=sum2/n ‘平均数
end function

c的:

float fc()
{
int d,count=0;
float Sum=0,Avg,S;

scanf(\"%d\",&d);
Avg=d;
while(d!=-65536)
{
count++;
Sum=Sum+d*d;
Avg=Avg+(Avg-d)/count;
S=(Sum-count*Avg*Avg)/count;
scanf(\"%d\",&d);
}
return S;
}

// 用C:

#include <stdio.h>
// n -- 个数, x -- 存放输入数的数组
// 送回方差
double fangcha(int n, double *x); // 函数原型

main ()
{
double s2;
double x[10] = {1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0}; //例子
int n = 10;

s2 = fangcha(10, &x[0]); // 调用
printf("s2= %lf",s2);

}

// 这是你要的方差计算子程序. 任意个输入数:
double fangcha(int n, double *x) {
int i;
double sum=0.0;
double xm,term,s2;

for (i=0;i<n;i++) sum = sum + x[i];
xm = sum / (double) n;
sum=0.0;
for (i=0;i<n;i++) sum = sum + (x[i] - xm) * (x[i] - xm);
s2 = sum / n;
return s2;
}

好多人答。

double fangcha(int n, double *x) {
int i;
double sum=0.0;
double xm,term,s2;

for (i=0;i<n;i++) sum = sum + x[i];
xm = sum / (double) n;
sum=0.0;
for (i=0;i<n;i++) sum = sum + (x[i] - xm) * (x[i] - xm);
s2 = sum / n;
return s2;
}

我想你可能要的这种:n是未知的,用户在输入结束符之前也不知到n是多少。
所以我做了下面这个函数:
float fc()
{
int d,count=0;
float Sum=0,Avg,S;

scanf(\"%d\",&d);
Avg=d;
while(d!=-65536)
{
count++;
Sum=Sum+d*d;
Avg=Avg+(Avg-d)/count;
S=(Sum-count*Avg*Avg)/count;
scanf(\"%d\",&d);
}
return S;
}
其中Sum是平方和,Avg是平均值,S是方差.
在用户输入-65536后退出。

同意楼上的观点

n-平均数0的平方