随机样本分析

11 篇文章 0 订阅

/*
代码作者:不详
代码整理者:设计天下 MySDN网站 算法天下工作室

功能:随机样本分析
*/

#include "math.h"
#include "stdio.h"
#define  UNUM   50 /*一个输出单元代表的样本点数*/

void rndsplanalysis_lis(double x[],int n, double x0,double h,int m,int l, double dt[],int g[],int q[])
{
 int    i,j,k,t;
 double s;
 char   ch[UNUM + 1];
 
 for (i=0,dt[0]=0.0; i<n; i++)
 {
  dt[0]+=x[i];
 }
 dt[0]/=n;                     /*dt[0]: 算术平均*/
 for (i=0,dt[1]=0.0; i<n; i++)
 {
  dt[1]+=pow(x[i]-dt[0],2);
 }
 dt[1]/=n;                     /*dt[1]: 方差*/
 dt[2]=sqrt(dt[1]);            /*dt[2]: 标准差*/
 for (i=0; i<m; i++) 
 {
  s=x0+(i+0.5)*h-dt[0];
  s=exp(-s*s/(2.0*dt[1]));
  g[i]=(int)(n*s*h/(dt[2]*2.5066));  /*高斯分布理论样本点数*/
 }
 for (i=0; i<m; i++) 
 {
  q[i]=0;
 }
 s=x0+m*h;
 for (i=0; i<n; i++)
 {
  if ((x[i]>=x0) && x[i]<=s)
  {
   j=(int)((x[i]-x0)/h);
   q[j]++;              /*实际点数*/
  }
 }
 if (l==0)
 {
  return; /*l: 0不输出直方图,1输出直方图*/
 }
 printf("n=%d",n);
 printf("/nx0=%5.3lf  h=%5.3lf  m=%d",x0,h,m);
 printf("/n a=%5.3lf  s=%5.3lf  t=%5.3lf  ",dt[0],dt[1],dt[2]);
 printf("/n");
 for (i=0,t=0; i<m; i++)
 {
  if (q[i]>t)
  {
   t=q[i];
  }
 }
 for(k=1;t>UNUM;)
 {
  k<<=1;
  t>>=1;
 }
 for (i=0; i<m; i++) 
 {
  s=x0+(i+0.5)*h;
  for (j=0; j<=UNUM; j++)
  {
   ch[j]=' ';
  }
  j=q[i]/k;
  for (t=0; t<j; t++)
  {
   ch[t]='+';
  }
  j=g[i]/k;
  if ((j>0)&&(j<=UNUM))
  {
   ch[j]='*';
  }
  printf("%5.3lf  %7d  ",s,q[i]);
  for (j=0; j<=UNUM; j++)
  {
   printf("%c",ch[j]);
  }

  printf("/n");
 }
 printf("the ratio is 1:%d",k);
 return;
}

int main()
{
 int    g[10],q[10],n,m,l;
 double dt[3],x0,h;
 double x[50]={
   201.123,195.673,195.757,196.051,196.092,
   197.392,202.004,198.189,193.850,198.944,
   199.237,199.698,199.572,199.614,199.824,
   200.746,200.830,200.914,200.956,200.998,
   200.160,200.243,200.285,200.453,200.704,
   202.004,202.088,202.172,202.172,202.297,
   202.884,202.507,202.591,202.716,202.633,
   203.051,203.052,203.094,203.094,203.177,
   204.267,204.352,204.352,204.729,205.106,
   205.148,205.357,205.400,205.483,206.070,
  };
 
 x0=195.0;
 n=50;
 h=1.0;
 m=8;
 l=1;
 rndsplanalysis_lis(x,n,x0,h,m,l,dt,g,q);
 return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值