C语言 求标准偏差

百度百科:标注差:点击打开链接

标准偏差是一种量度数据分布的分散程度之标准,能反映一个数据集的离散程度,标准偏差越小,这些值偏离平均值就标准偏差越少。

例如,A、B两组各有6位学生参加同一次语文测验,A组的分数为95、85、75、65、55、45,B组的分数为73、72、71、69、68、67。这两组的平均数都是70,但A组的标准差应该是18.708分,B组的标准差应该是2.366分,说明A组学生之间的差距要比B组学生之间的差距大得多。

公式

编辑
样本标准偏差
代表所采用的样本X1,X2,...,Xn的均值。N表示数的个数
总体标准偏差
代表总体X的均值。
例:有一组数字分别是200、50、100、200,求它们的样本标准偏差。

N=4
= (200+50+100+200)/4 = 550/4 = 137.5
= [(200-137.5)^2+(50-137.5)^2+(100-137.5)^2+(200-137.5)^2]/(4-1)
样本标准偏差 S = Sqrt(S^2)=75
/**
StandardDeviation.c
标准偏差公式:S = Sqrt( ∑( (xi-x_平均)*xi-x_平均) ) /(N-1)))

公式中∑代表总和,x_平均代表x的均值,^2代表二次方,Sqrt代表平方根.   
1.计算总和:sum
2.统计个数:count
3.计算平均值:avg=sum/count;
5.平方累加求和sum2=(x1-avg)^2+(x1-avg)^2+...+(xn-avg)^2
6.累加求和结果除以元素的个数  sum2/count
    样本标准偏差除以个数减一 sum2/(count-1)
7.总体=sqrt(sum2/count)
    样本=sqrt(sum2/(count-1));
*/
#include<stdio.h>
#include<math.h>

int main()
{
    double array[]={95,85,75,65,55,45};
    int N=sizeof(array)/sizeof(array[0]);//计算元素个数N
    printf("N=%d\n",N);//6
    int i;
    double sum=0;//总和
    double avg;//平均值
    for(i=0;i<N;i++)
    {
        sum+=array[i];//求总和
    }
    avg=sum/N;//计算平均值
    printf("avg=%lf\n",avg);//70,对的
    double temp=0;
    double Spow=0;
    for(i=0;i<N;i++)
    {
        Spow+=(array[i]-avg)*(array[i]-avg);//平方累加
    }
//    double Stwo=Spow/N;
//    printf("Stwo=%lf\n",Stwo);
    printf("如果是总体,则标准偏差为:%lf\n",sqrt(Spow/N));
    printf("如果是样本,则标准偏差为:%lf\n",sqrt(Spow/(N-1)));

}
测试:
N=6
avg=70.000000
如果是总体,则标准偏差为:17.078251
如果是样本,则标准偏差为:18.708287


  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值