直方图的平均值和标准差

时间:2016-10-17 12:06:26

标签: c

您好我是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;   

}

0 个答案:

没有答案