C语言中,如何求方差

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

方差的计算公式:

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

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

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

1.求平均值;

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

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

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

C语言中,如何求方差_第1张图片

#include
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
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循环中。

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

你可能感兴趣的:(c语言,算法)