我尝试在 C 中计算小于 100 个数字的标准偏差
I try to calculate a Standard deviation of less than 100 numbers in C
#include<stdio.h>
#include<math.h>
int main()
{
int n;
scanf("%d",&n);
int i=0,sum=0,average=0;
int num[100]={0};
double dvalue[100]={0.0};
double variance=0.0,s=0.0;
for(i=0;i<n;i++){//I just know this method to get the number array;
scanf("%d",&num[i]);
sum+=num[i];
}
average=sum/n;
for(i=0;i<n;i++){
dvalue[i]=num[i]-average;
dvalue[i]=pow(dvalue[i],2.0);//to get the (x-average)……2
variance+=dvalue[i];
}
s=sqrt(variance);
return 0;
}
这是我的代码,但无法正确执行 answer.I 我是新手,这是我第一次通过 Whosebug 寻求帮助,我无法获得输出,为什么?
谢谢大家,我一开始其实是debug的,但是不知道怎么修改,再次感谢
有两点需要更正:
1. average
的类型应该是 double
2. 你错误地计算了方差。取 (x- 平均值) 的总和后,你应该将它除以 n
#include<stdio.h>
#include<math.h>
int main()
{
int n;
scanf("%d", &n);
int i = 0, sum = 0;
double average = 0;
int num[100] = { 0 };
double dvalue[100] = { 0.0 };
double variance = 0.0, s = 0.0;
for (i = 0; i < n; i++) { //I just know this method to get the number array;
scanf("%d", &num[i]);
sum += num[i];
}
printf("sum %d\n", sum);
average = sum;
average = average / n;
printf("average %lf\n", average);
for (i = 0; i < n; i++) {
dvalue[i] = num[i] - average;
dvalue[i] = pow(dvalue[i], 2.0); //to get the (x-average)……2
variance += dvalue[i];
}
variance = variance / n; // population variance
s = sqrt(variance);
printf("varience %lf\n", variance);
printf("Population Standard deviation %lf", s);
return 0;
}
根据@chux 的建议编辑了答案
#include<stdio.h>
#include<math.h>
int main()
{
int n;
scanf("%d",&n);
int i=0,sum=0,average=0;
int num[100]={0};
double dvalue[100]={0.0};
double variance=0.0,s=0.0;
for(i=0;i<n;i++){//I just know this method to get the number array;
scanf("%d",&num[i]);
sum+=num[i];
}
average=sum/n;
for(i=0;i<n;i++){
dvalue[i]=num[i]-average;
dvalue[i]=pow(dvalue[i],2.0);//to get the (x-average)……2
variance+=dvalue[i];
}
s=sqrt(variance);
return 0;
}
这是我的代码,但无法正确执行 answer.I 我是新手,这是我第一次通过 Whosebug 寻求帮助,我无法获得输出,为什么? 谢谢大家,我一开始其实是debug的,但是不知道怎么修改,再次感谢
有两点需要更正:
1. average
的类型应该是 double
2. 你错误地计算了方差。取 (x- 平均值) 的总和后,你应该将它除以 n
#include<stdio.h>
#include<math.h>
int main()
{
int n;
scanf("%d", &n);
int i = 0, sum = 0;
double average = 0;
int num[100] = { 0 };
double dvalue[100] = { 0.0 };
double variance = 0.0, s = 0.0;
for (i = 0; i < n; i++) { //I just know this method to get the number array;
scanf("%d", &num[i]);
sum += num[i];
}
printf("sum %d\n", sum);
average = sum;
average = average / n;
printf("average %lf\n", average);
for (i = 0; i < n; i++) {
dvalue[i] = num[i] - average;
dvalue[i] = pow(dvalue[i], 2.0); //to get the (x-average)……2
variance += dvalue[i];
}
variance = variance / n; // population variance
s = sqrt(variance);
printf("varience %lf\n", variance);
printf("Population Standard deviation %lf", s);
return 0;
}
根据@chux 的建议编辑了答案