![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() |
Altair |
![]()
Сообщение
#1
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
(из лекции)
Энтропия это величина, вычисляемая по формуле: ![]() где P(xi) - вероятность появления символа xi в сообщении, ni - число символов в сообщении объемом n. Вопрос первый. Я верно все записал, т.е. энтропия так считается ? Второй вопрос, пишу программу для подсчета :
#include <stdio.h>
#include <string.h>
#include <math.h>
double get_count (char x[], char c){
int i;
double res=0;
for (i=0; i<=strlen(x); i++) if (x[i]==c) res+=1;
return res;
}
double prob (char x[], char c){
return get_count(x,c) / strlen(x);
}
double coeff_entropy (char x[]) {
int i;
double res=0;
for (i=0; i<=strlen(x); i++) {
res+= prob(x,x[i]) * log2(prob(x,x[i]));
}
res=res*(-1);
return res;
}
int main () {
char s[80];
printf("Entropy\n Enter text...\n");
scanf("%s",&s);
printf("Entropy [s] = %f", coeff_entropy(s));
return 0;
}
выдается какой-то бред. Для сообщения 1111111111111211111111 выдается энтропия 1.750737 а для 1234567890 - 3.654121 мне кажется результат не верен. т.к. вторая строка гораздо больше уменьашет степень неопределенности... где я ошибся ? -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
![]() ![]() |
![]() |
Текстовая версия | 7.08.2025 6:25 |