C语言中,如何求方差

在解决这个问题之前,我们首先需要了解数学中的方差是如何计算的,

方差的计算公式:

S2={(x1-m)2+(x2-m)2+(x3-m)2+…+(xn-m)2}/n

在这个公式中,m为平均值,x1,x2,x3,xn是元素;

所以,求方差可以分为三步:

1.求平均值;

2.求每个元素于平均值的差的平方和;

3.将上述平方和除以n。

在下面的例子中,我才用数组的形式来求方差。

#include<stdio.h>
int main()
{
    float sum=0;
    float m=0;
    float a[12]={7.62, 7.56, 7.82, 7.22, 7.38, 7.56, 7.77, 7.82, 7.32, 7.48, 7.60, 7.50};

    for(int i=0;i<12;i++)
    {
        sum+=a[i];
    } 
    m=sum/12;
    float s=0;
    for(int j=0;j<12;j++)
    {
        s+=(a[j]-m)*(a[j]-m);
    }
    s/=12;
    printf("%.7f",s);
    return 0;
 } 

 我们定义一个长度为12位的浮点型数组,并赋初始值。

第一步:然后,用for循环求出所有元素之和sum,再用sum/n,就得到了平均值。

第二布:再次使用for循环,求出平方和,图片中的 s+=(a[j]-m)*(a[j]-m),s=s+(a[j]-m)*(a[j]-m)代替,表示的是平方和的累加。

    可以用需要注意的是,无论是数组元素、元素之和、平均值还是平方和,都要采用flaot型变量,虽然double 型变量也可以,但是占用的存储空间比较大,没有必要。

第三步:将平方和除以12。

这只是求方差的一种形式,如果想要输入数组元素来求方差的话,可以将代码变为:

#include<stdio.h>
int main()
{
    float sum=0;
    float m=0;
    float a[12];

    for(int i=0;i<12;i++)
    {
        scanf("%f",&a[i]);
        sum+=a[i];
    } 
    m=sum/12;
    float s=0;
    for(int j=0;j<12;j++)
    {
        s+=(a[j]-m)*(a[j]-m);
    }
    s/=12;
    printf("%.7f",s);
    return 0;
 } 

基本上跟上一个代码一样,只不过将数组赋初始值的步骤放到了第一个for循环中。

如果对您有所帮助,可以点个收藏加关注哦!

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星光坠落残阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值