codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
#include <stdio.h> #include <stdlib.h> #include <math.h> #define N 128 void probability_calc(int c[], double p[], int n) { int i, sum = 0; for (i = 0; i < n; i++) sum += c[i]; for (i = 0; i < n; i++) p[i] = (double) c[i] / sum; } double entropy_calc(double p[], int n) { int i; double entropy = 0; for (i = 0; i < n; i++) if (p[i]) entropy -= log(p[i]) / log(2) * p[i]; return entropy; } int main(void) { int cnt[N] = {0}; char str[20], c; double p[N] = {}; FILE *fp; printf("ファイル名を入力してください:"); scanf("%s", str); fp = fopen(str, "r"); if (!fp) { printf("ファイルopenエラーです"); return -1; } while ((c = fgetc(fp)) != EOF) if (c != '\n') cnt[(int) c]++; probability_calc(cnt, p, N); printf("エントロピーH = %f\n", entropy_calc(p, N)); return (0); }
Private
[
?
]
Run code
Submit