tanszek:oktatas:techcomm:information
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
tanszek:oktatas:techcomm:information [2024/10/08 07:23] – [Information] knehez | tanszek:oktatas:techcomm:information [2024/10/15 06:30] (current) – [Example of Entropy calculation] knehez | ||
---|---|---|---|
Line 15: | Line 15: | ||
If an event space consist of two equal-probability event \(p(E_1) = p(E_2) = 0.5 \) then, | If an event space consist of two equal-probability event \(p(E_1) = p(E_2) = 0.5 \) then, | ||
- | $$ I_{E_1} = I_{E_2} = \log_2 \frac{1}{0.5} = - \log_2 | + | $$ I_{E_1} = I_{E_2} = \log_2 \frac{1}{0.5} = - \log_2 |
So the unit of the information means the news value which is connected to the simple, less likely, same probability choice. | So the unit of the information means the news value which is connected to the simple, less likely, same probability choice. | ||
Line 92: | Line 92: | ||
Let's calculate the maximum entropy: | Let's calculate the maximum entropy: | ||
- | $$ H_{\text{max}} = \log_2 n = \log_2 4 = 2 $$ | + | $$ H_{\text{max}} = \log_2 n = \log_2 4 = 2 [bit]$$ |
Then, substituting into the formula for redundancy: | Then, substituting into the formula for redundancy: | ||
Line 99: | Line 99: | ||
which means the redundancy of the event system is approximately 16%. | which means the redundancy of the event system is approximately 16%. | ||
+ | |||
+ | ==== Example of Entropy calculation ==== | ||
+ | |||
+ | Why do not store raw password strings in compiled code? | ||
+ | |||
+ | <sxh c> | ||
+ | #include < | ||
+ | #include < | ||
+ | |||
+ | float calculateEntropy(unsigned int bytes[], int length); | ||
+ | |||
+ | char sample[] = "Some poetry types are unique to particular cultures and genres and respond to yQ%v? | ||
+ | |||
+ | int main() | ||
+ | { | ||
+ | unsigned int byteCounter[256]; | ||
+ | const int windowWidth = 20; | ||
+ | |||
+ | for(int i = 0; i < sizeof(sample) - windowWidth; | ||
+ | { | ||
+ | memset(byteCounter, | ||
+ | |||
+ | char *p = & | ||
+ | char *end = & | ||
+ | |||
+ | while(p != end) | ||
+ | { | ||
+ | byteCounter[(unsigned char)(*p++)]++; | ||
+ | } | ||
+ | float entropy = calculateEntropy(byteCounter, | ||
+ | printf(" | ||
+ | } | ||
+ | |||
+ | |||
+ | } | ||
+ | |||
+ | |||
+ | float calculateEntropy(unsigned int bytes[], int length) | ||
+ | { | ||
+ | float entropy = 0.0f; | ||
+ | |||
+ | for (int i = 0; i < 256; i++) | ||
+ | { | ||
+ | if (bytes[i] != 0) | ||
+ | { | ||
+ | float freq = (float) bytes[i] / (float) length; | ||
+ | entropy += -freq * log2f(freq); | ||
+ | } | ||
+ | } | ||
+ | return entropy; | ||
+ | } | ||
+ | </ | ||
tanszek/oktatas/techcomm/information.1728372194.txt.gz · Last modified: 2024/10/08 07:23 by knehez