cyberniklee

导航

 

小红班上有两组同学的数学考试分数为:

第一组:小红:100分,小明:60分,小宇:20分

第二组:小蓝:70分,小华:60分,小杰:50分

 

那么很容易算出,第一组的平均分是60分,第二组的平均分也是60分。

 

这下可好,小红的100分被小宇拉了后腿。这时候,该引入一种方法,来表现这个问题。好让老师知道哪些小组的成绩差距比较大。

 

方差能比较好的表达一组数据离散的程度,方差大,这组数据分散的就比较大;方差小,这组数据分散的就比较小。

 

方差(variance)的表达公式为:

 

照这个公式计算,第一组的方差为:

 

第二组的方差为:

 

可以看出,第一组的方差远大于第二组。

 

下面用C语言实现

#include <stdio.h>

float calc_variance(float samples[], int count)
{
  float sum_of_samples = 0;
  float average = 0;
  float variance = 0;

  for(int i = 0; i < count; i++)
  {
    sum_of_samples += samples[i];
  }

  average = sum_of_samples / count;

  for(int i = 0; i < count; i++)
  {
    float temp = samples[i] - average;
    variance += (temp * temp);
  }

  variance /= count;

  return variance;
}

int main()
{
  float team1[] = {100, 60, 20};
  float team2[] = {70, 60, 50};

  printf("variance of team 1 is %f\n", calc_variance(team1, 3));
  printf("variance of team 2 is %f\n", calc_variance(team2, 3));

  return 0; 
}

 

运行结果为:

variance of team 1 is 1066.666626
variance of team 2 is 66.666664

posted on 2017-11-30 00:38  cyberniklee  阅读(1278)  评论(0编辑  收藏  举报