验证正态分布的数学期望和方差
//编程环境:Xcode
//编程语言:C语言
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#define pai 3.1415926
int main ()
{
srand((unsigned)time(NULL));
double a[1000];
double e,d,p[1000];
double sumbeta=0;
double beta_e=0;
double beta_d=0;
double er,dr,f,b1,b2,b0,b3;
double beta_di;
int i;
printf("请输入e和d的值:\n");
scanf("%lf%lf",&e,&d);
for(i=0;i<1000;i++)
{
a[i]=rand()%1000;
}
for(i=0;i<1000;i++){
b0=(a[i]-e)/d;
b1=b0*b0*(-0.5);
b2=exp(b1);
b3=1/(pow(2*pai,0.5)*d);
p[i]=b2*b3;//正太分布公式
beta_e=p[i]*a[i];//计算每个值的均值
sumbeta+=beta_e;
}
beta_e=sumbeta;
er=fabs(beta_e-e);
for(i=0;i<1000;i++){
f=beta_e-a[i];
beta_di=p[i]*pow(f,2);
beta_d+=beta_di;//计算方差
}
dr=fabs(beta_d-d*d);
printf("理论期望为%lf,理论方差为%lf,实验的期望值为%lf,实验的方差为%lf,期望的误差为%lf,方差的误差为%lf\n",e,d*d,beta_e,beta_d,er,dr);
return 0;
}
请输入e和d的值:
500 100
理论期望为500.000000,理论方差为10000.000000,
实验的期望值为484.429298,实验的方差为10341.982960,
期望的误差为15.570702,方差的误差为341.982960