您好我是C编程的新手,我正在尝试计算标准偏差和使用rand()
函数生成的包含0.0到10.0数字的分箱直方图的平均值。
我似乎没有从计算中得到正确的值。我觉得这与它有关
我的代码中h[i] = h[binNum]++;
行,但正如我所说,我是新手,并希望得到任何帮助。
这是我到目前为止所写的内容:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int main (void){
float *x = {0};
int N = 1000;
int h[1000];
int i;
int binNum=0;
float mean;
float variance ;
float sd ;
x =(float*) malloc(sizeof(float)*N);
if (x == NULL){
printf("Error no memory allocated");
system("pause");
return 1;
}
for (i=0; i<1000 ;i++){
h[i] = 0;
}
for (i=0;i<N;i++){
x[i]=rand()/3276.8;
}
for (i =0 ; i<N; i++){
binNum = x[i]*100;
h[i] = h[binNum]++;
}
for (i=0;i<1000;i++){
mean = mean + i * h[binNum];
}
mean = mean/N;
variance = 0;
for (i=0;i<1000;i++){
variance = variance + h[i]*(i-mean)*(i-mean);
}
variance = variance/(N-1);
sd = sqrt(variance);
printf("The Histogram mean is equal to %f\n",mean);
printf("The standard Dev is equal to %f\n",sd);
system("pause");
free(x);
return 0;
}