cansihuaiguai 发表于 2022-12-27 14:39:10

大佬们,怎么让C语言实现信息熵计算

可以输入任意的信源数量,以及对应数量的空间概率,从而求得任意的信息熵。

Mike_python小 发表于 2022-12-27 14:40:27

不知道

fjqz177 发表于 2023-1-4 22:23:26

#include <math.h>
#include <stdio.h>
#define        LOG_N 2

float self_info2(float p[],int *r);
int main(){
    int                input_number=0;
    int                output_number;
    int                *r;
        float        p;
        float        H=0;
       
        printf("input X number:\n");
    scanf("%d",&input_number);
          
    for(int i=0;i<(input_number);i++)
    {       
            printf("input P(x):\n");
            scanf("%f",&p);
            *r=i;
                H+=self_info2(p,r);
                printf("return %f\n",self_info2(p,r));
    }
       
    printf("H(x) result is:%f",H);
    return 0;
}
//求以N为底的,单个概率P的自信息
float self_info2(float p[],int *r){
                int i;
                i=*r;
                return -p*(log(p)/log(LOG_N));
}
这样
页: [1]
查看完整版本: 大佬们,怎么让C语言实现信息熵计算