|
- 統(tǒng)計(jì)信源熵程序:
- #include<math.h>
- #include<stdio.h>
- void main()
- {
- int ch[50]={0};
- int sum=0,n=0;
- int i;
- double p[50]={0};
- double H=0;
- char c;
- printf("please input an essay:\n");
- while((c=getchar())!='\n')
- {
- for(i=65;i<=90;i++)
- {
- if(i==c)
- {
- ch[i-65]++;
- sum++;
- }
- }
- for(i=97;i<=112;i++)
- {
- if(c==i)
- {
- ch[i-65]++;
- sum++;
- }
- }
- }
- for(i=0;i<50;i++)
- {
- p[ i]=(double)ch[ i]/(double)sum;
- if(p[ i]!=0)
- {
- printf("p(%c)=%1.2f",i+65,p[ i]);
- n++;
- }
- if(n==3)
- {
- printf("\n");
- n=0;
- }
- }
- for(i=0;i<=25;i++)
- {
- if(p[ i]!=0)
- H=H+p[ i]*(log(p[ i]));
- }
- printf("\n");
- printf("信息熵=%f",-H);
- printf("\n");
- }
復(fù)制代碼
|
|