C语言计算标准差程序

如何用C语言编写一个计算标准差、均值和方差的程序,并附带示例?在此示例之前,我们需要理解一些概念,例如均值和方差,然后再理解标准差。为了更好地理解这些概念,我们在此处使用了一些示例数据。

例如,我们有5个项目,它们的价格分别为10、25、30、67、92。让我们在C语言中计算均值、方差和标准差。

均值

均值也可以称为平均值,我们可以使用以下公式计算:

均值 = 每个个体数值的总和 / 项目总数
均值 = (10 + 25 + 30 + 67 + 92) / 5
均值 = 224 / 5 = 44.8

方差

在计算方差之前,我们必须找出原始值与均值之间的差值,因为:

差值 = ((原始值 – 均值)² + (原始值 – 均值)² +…. ) / 项目总数
差值 = (10 – 48) + (25 – 48) + (30 – 48) + (67 – 48) + (92 – 48)
差值 = (- 38) + (- 23) + (- 18) + (19) + (44)

我们可以使用以下公式计算方差:
方差 = ( (- 38)² + (- 23)² + (- 18)² + (19)² + (44)² ) / 5
方差 = (1444 + 529 + 324 +361 + 1936) / 5
方差 = 4594 / 5
方差 = 918.8

标准差

方差的平方根称为标准差。
标准差 = √918.8
标准差 = 30.31

C语言计算标准差、均值和方差的程序

此程序计算给定数字数组的均值、方差和标准差。

#include <stdio.h>
#include <math.h>

void main()
{
  float Price[50];
  int  i, Number;
  float Mean, Variance, SD, Sum=0, Differ, Varsum=0;

  printf("\nPlease Enter the N Value\n");
  scanf("%d", &Number);

  printf("\nPlease Enter %d real numbers\n",Number);
  for(i=0; i<Number; i++)
   {
     scanf("%f", &Price[i]);
   }

  for(i=0; i<Number; i++)
   {
     Sum = Sum + Price[i];
   }
  
  Mean = Sum /(float)Number;

  for(i=0; i<Number; i++)
   {
     Differ = Price[i] - Mean;
     Varsum = Varsum + pow(Differ,2);
   }
  
  Variance = Varsum / (float)Number;
  SD = sqrt(Variance);
  
  printf("Mean               = %.2f\n", Mean);
  printf("Varience           = %.2f\n", Variance);
  printf("Standard deviation = %.2f\n", SD);
}
C Program to Calculate Standard Deviation

在此C语言计算标准差的程序中,第一个Printf语句要求用户输入N值(价格数组中的项目数)。

printf("\n Please Enter the N Value \n");

scanf(“%d”, &Number)语句将用户输入的值赋给变量Number。

第一个for循环

for(i=0; i<Number; i++)
{
  scanf("%f", &Price[i]);
}

(i<Number) – 该条件可防止编译器超出N值(由于数组从0开始,到N-1结束,并且我们指定了i < Number)。

scanf("%f", &Price[i]) )

C程序中的scanf语句会将用户输入的值赋给Price数组。因此,第一个值将赋给Price[0],第二个值赋给Price[1],依此类推。

第二个for循环

for(i=0; i<Number; i++)
{
   Sum = Sum + Price[i];
}

Sum = Sum + Price[i];语句将计算Price数组中每个元素的总和。

最初,我们将Sum = 0。因此,第一次迭代将是:
Sum = 0 + Price[0] = 0 + 10 = 10
Sum = 10 + Price[1] = 10 + 20 = 30
Sum = 30 + Price[2] = 30 + 30 = 60
Sum = 60 + Price[3] = 60 + 40 = 100
Sum = 100 + Price[4] = 100 + 50 = 150

下一行,我们正在计算均值或平均值。
Mean = Sum /(float)Number;
Mean = 150 / 5 = 30

由于Number是整数值,而Mean是浮点数值,因此我们必须将Number值强制转换为float(即,(float)Number)。如果您忘记进行类型转换,它将给出错误的值。

第三个for循环

for(i=0; i < Number; i++)
{
   Differ = Price[i] - Mean;

   Varsum = Varsum + pow(Differ, 2);
}

在for循环中,pow()是一个数学函数,它将计算Differ的2次幂(等于Differ2)。

我们也可以将上述代码写在一行中,而不是写在两行。

Varsum = Varsum + pow( (Price[i] – Mean), 2);

第一次迭代时的Varsum
Varsum = 0 + pow( (Price[0] – 30), 2)
= 0 + pow( (10 – 30), 2)
= 0 + (20 * 20) = 400

第二次迭代时的Varsum
Varsum = 400 + pow( (Price[1] – 30), 2)
= 400 + pow( (20 – 30), 2)
= 400 + (10 * 10) = 500

第三次迭代时的Varsum
Varsum = 500 + pow( (Price[2] – 30), 2)
= 500 + pow( (30 – 30), 2)
= 500 + (0 * 0) = 500

第四次迭代时的Varsum
Varsum = 500 + pow( (Price[3] – 30), 2)
= 500 + pow( (40 – 30), 2)
= 500 + (10 * 10) = 600

第五次迭代时的Varsum
Varsum = 600 + pow( (Price[4] – 30), 2)
= 600 + pow( (50 – 30), 2)
= 600 + (20 * 20) = 1000

下一行,我们正在此编程中计算方差。

Variance = Varsum / (float)Number;

Variance = 1000 / 5 = 200

现在,该计算标准差了。

SD = sqrt(Variance);

SD = sqrt (200) = 14.142

sqrt()是一个数学函数,用于计算任何给定数字的平方根。

C语言使用函数计算标准差的程序

此程序使用函数计算给定数字数组的均值、方差和标准差。

我们已经在上面的示例中看到过。有很多for循环和许多计算。将它们全部放在一起通常会令人困惑,因此在此程序中,我们使用函数概念将计算分开。

#include<stdio.h>
#include<math.h>
float StandardDeviation (float Price[],int Number);

int main()
{
  float Price[50], SD;
  int  i, Number;
 
  printf("\nPlease Enter the N Value\n");
  scanf("%d", &Number);

  printf("\nPlease Enter %d real numbers\n",Number);
  for(i=0; i<Number; i++)
   {
     scanf("%f", &Price[i]);
   }

  //Calling the Function StandardDeviation
  SD = StandardDeviation (Price, Number);

  printf("Standard deviation = %.2f\n", SD);
    return 0;
}

float StandardDeviation (float Price[],int Number)
{
  float Mean, Variance, SD, Sum=0, Varsum=0;
  int i;
 
  for(i=0; i<Number; i++)
   {
     Sum = Sum + Price[i];
   }
  Mean = Sum /(float)Number;
 
  for(i=0; i<Number; i++)
   {
     Varsum = Varsum + pow((Price[i] - Mean),2);
   }
 
  Variance = Varsum / (float)Number;
  SD = sqrt(Variance);
  
  printf("Mean               = %.2f\n", Mean);
  printf("Varience           = %.2f\n", Variance);
 
  return SD;
}
Please Enter the N Value
6

Please Enter 6 real numbers
5
15
25
35
45
55
Mean               = 30.00
Varience           = 291.67
Standard deviation = 17.08

在此C语言计算标准差的程序中,当编译器遇到以下语句时:

SD = StandardDeviation (Price, Number);

然后它将跳转到函数。

float StandardDeviation (float Price[ ], int Number)

为了更好地理解,我们在函数声明和函数调用中使用了相同的参数。在实际应用中,名称可能会更改,但数据类型应相同。

float StandardDeviation (float Price[ ],int Number)

在上面的函数中,我们计算了N个数字数组的均值、方差和标准差。函数内部的逻辑与我们在第一个示例中解释的相同。因此,为了理解,请参考第一个示例分析部分。

最好在我们博客的文章函数中回顾一下函数,以理解函数。