Created
December 2, 2021 03:07
-
-
Save xen0bit/ad55a79bef6bc17dcd0e770646ab3085 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import ( | |
"bytes" | |
"fmt" | |
"math" | |
"math/rand" | |
) | |
func shannon(input []byte) (entropy float64) { | |
if len(input) == 0 { | |
return 0 | |
} else { | |
for i := 0; i < 256; i++ { | |
s := make([]byte, 1) | |
s[0] = byte(i) | |
px := float64(bytes.Count(input, s)) / float64(len(input)) | |
if px > 0 { | |
entropy += -px * math.Log2(px) | |
} | |
} | |
return entropy | |
} | |
} | |
func main() { | |
samples := 100000 | |
for j := 1; j < 512; j++ { | |
maxForLength := float64(0) | |
for i := 1; i < samples; i++ { | |
r := make([]byte, j) | |
rand.Read(r) | |
maxForLength = math.Max(shannon(r), maxForLength) | |
} | |
fmt.Println("Length:", j, "Max Shannon For Length:", maxForLength) | |
} | |
} | |
// Length: 1 Max Shannon For Length: 0 | |
// Length: 2 Max Shannon For Length: 1 | |
// Length: 3 Max Shannon For Length: 1.584962500721156 | |
// Length: 4 Max Shannon For Length: 2 | |
// Length: 5 Max Shannon For Length: 2.321928094887362 | |
// Length: 6 Max Shannon For Length: 2.584962500721156 | |
// Length: 7 Max Shannon For Length: 2.807354922057604 | |
// Length: 8 Max Shannon For Length: 3 | |
// Length: 9 Max Shannon For Length: 3.169925001442312 | |
// Length: 10 Max Shannon For Length: 3.321928094887362 | |
// Length: 11 Max Shannon For Length: 3.459431618637298 | |
// Length: 12 Max Shannon For Length: 3.584962500721156 | |
// Length: 13 Max Shannon For Length: 3.7004397181410926 | |
// Length: 14 Max Shannon For Length: 3.8073549220576055 | |
// Length: 15 Max Shannon For Length: 3.906890595608518 | |
// Length: 16 Max Shannon For Length: 4 | |
// Length: 17 Max Shannon For Length: 4.08746284125034 | |
// Length: 18 Max Shannon For Length: 4.169925001442312 | |
// Length: 19 Max Shannon For Length: 4.247927513443583 | |
// Length: 20 Max Shannon For Length: 4.321928094887363 | |
// Length: 21 Max Shannon For Length: 4.39231742277876 | |
// Length: 22 Max Shannon For Length: 4.459431618637295 | |
// Length: 23 Max Shannon For Length: 4.523561956057013 | |
// Length: 24 Max Shannon For Length: 4.584962500721156 | |
// Length: 25 Max Shannon For Length: 4.643856189774723 | |
// Length: 26 Max Shannon For Length: 4.70043971814109 | |
// Length: 27 Max Shannon For Length: 4.754887502163471 | |
// Length: 28 Max Shannon For Length: 4.807354922057602 | |
// Length: 29 Max Shannon For Length: 4.857980995127571 | |
// Length: 30 Max Shannon For Length: 4.906890595608519 | |
// Length: 31 Max Shannon For Length: 4.954196310386877 | |
// Length: 32 Max Shannon For Length: 5 | |
// Length: 33 Max Shannon For Length: 5.044394119358456 | |
// Length: 34 Max Shannon For Length: 5.087462841250338 | |
// Length: 35 Max Shannon For Length: 5.129283016944964 | |
// Length: 36 Max Shannon For Length: 5.1699250014423095 | |
// Length: 37 Max Shannon For Length: 5.209453365628954 | |
// Length: 38 Max Shannon For Length: 5.247927513443589 | |
// Length: 39 Max Shannon For Length: 5.285402218862247 | |
// Length: 40 Max Shannon For Length: 5.3219280948873635 | |
// Length: 41 Max Shannon For Length: 5.357552004618081 | |
// Length: 42 Max Shannon For Length: 5.3923174227787625 | |
// Length: 43 Max Shannon For Length: 5.426264754702098 | |
// Length: 44 Max Shannon For Length: 5.4594316186372955 | |
// Length: 45 Max Shannon For Length: 5.491853096329673 | |
// Length: 46 Max Shannon For Length: 5.5235619560570095 | |
// Length: 47 Max Shannon For Length: 5.55458885167764 | |
// Length: 48 Max Shannon For Length: 5.5849625007211605 | |
// Length: 49 Max Shannon For Length: 5.614709844115208 | |
// Length: 50 Max Shannon For Length: 5.643856189774728 | |
// Length: 51 Max Shannon For Length: 5.6724253419715005 | |
// Length: 52 Max Shannon For Length: 5.700439718141095 | |
// Length: 53 Max Shannon For Length: 5.727920454563195 | |
// Length: 54 Max Shannon For Length: 5.7548875021634665 | |
// Length: 55 Max Shannon For Length: 5.7813597135246555 | |
// Length: 56 Max Shannon For Length: 5.807354922057608 | |
// Length: 57 Max Shannon For Length: 5.832890014164736 | |
// Length: 58 Max Shannon For Length: 5.85798099512757 | |
// Length: 59 Max Shannon For Length: 5.882643049361836 | |
// Length: 60 Max Shannon For Length: 5.906890595608517 | |
// Length: 61 Max Shannon For Length: 5.930737337562883 | |
// Length: 62 Max Shannon For Length: 5.954196310386873 | |
// Length: 63 Max Shannon For Length: 5.97727992349992 | |
// Length: 64 Max Shannon For Length: 6 | |
// Length: 65 Max Shannon For Length: 6.022367813028458 | |
// Length: 66 Max Shannon For Length: 6.044394119358462 | |
// Length: 67 Max Shannon For Length: 6.066089190457767 | |
// Length: 68 Max Shannon For Length: 6.087462841250345 | |
// Length: 69 Max Shannon For Length: 6.108524456778164 | |
// Length: 70 Max Shannon For Length: 6.129283016944973 | |
// Length: 71 Max Shannon For Length: 6.149747119504677 | |
// Length: 72 Max Shannon For Length: 6.1699250014423175 | |
// Length: 73 Max Shannon For Length: 6.189824558880028 | |
// Length: 74 Max Shannon For Length: 6.182426338601928 | |
// Length: 75 Max Shannon For Length: 6.202152023829225 | |
// Length: 76 Max Shannon For Length: 6.247927513443591 | |
// Length: 77 Max Shannon For Length: 6.240812514720878 | |
// Length: 78 Max Shannon For Length: 6.259761193221231 | |
// Length: 79 Max Shannon For Length: 6.278464292480902 | |
// Length: 80 Max Shannon For Length: 6.271928094887357 | |
// Length: 81 Max Shannon For Length: 6.315158644859923 | |
// Length: 82 Max Shannon For Length: 6.308771516813209 | |
// Length: 83 Max Shannon For Length: 6.3509430458047635 | |
// Length: 84 Max Shannon For Length: 6.344698375159712 | |
// Length: 85 Max Shannon For Length: 6.3623321126082955 | |
// Length: 86 Max Shannon For Length: 6.379753126795122 | |
// Length: 87 Max Shannon For Length: 6.396966484354469 | |
// Length: 88 Max Shannon For Length: 6.391249800455488 | |
// Length: 89 Max Shannon For Length: 6.408317700629331 | |
// Length: 90 Max Shannon For Length: 6.425186429662996 | |
// Length: 91 Max Shannon For Length: 6.441860574264635 | |
// Length: 92 Max Shannon For Length: 6.458344564752679 | |
// Length: 93 Max Shannon For Length: 6.474642682075777 | |
// Length: 94 Max Shannon For Length: 6.469482468698902 | |
// Length: 95 Max Shannon For Length: 6.485645082015158 | |
// Length: 96 Max Shannon For Length: 6.5224625007211605 | |
// Length: 97 Max Shannon For Length: 6.538057172084049 | |
// Length: 98 Max Shannon For Length: 6.5534853543192995 | |
// Length: 99 Max Shannon For Length: 6.548548539271538 | |
// Length: 100 Max Shannon For Length: 6.583856189774739 | |
// Length: 101 Max Shannon For Length: 6.559201581761682 | |
// Length: 102 Max Shannon For Length: 6.59399396942248 | |
// Length: 103 Max Shannon For Length: 6.589413148542458 | |
// Length: 104 Max Shannon For Length: 6.585055102756485 | |
// Length: 105 Max Shannon For Length: 6.599959803380399 | |
// Length: 106 Max Shannon For Length: 6.633580831921675 | |
// Length: 107 Max Shannon For Length: 6.648009042475905 | |
// Length: 108 Max Shannon For Length: 6.643776391052348 | |
// Length: 109 Max Shannon For Length: 6.639743957804441 | |
// Length: 110 Max Shannon For Length: 6.6359051680701215 | |
// Length: 111 Max Shannon For Length: 6.668289740223994 | |
// Length: 112 Max Shannon For Length: 6.6756148550739915 | |
// Length: 113 Max Shannon For Length: 6.678586042061222 | |
// Length: 114 Max Shannon For Length: 6.703461176426475 | |
// Length: 115 Max Shannon For Length: 6.70635961616178 | |
// Length: 116 Max Shannon For Length: 6.7135423097640805 | |
// Length: 117 Max Shannon For Length: 6.72716055289823 | |
// Length: 118 Max Shannon For Length: 6.730100676480477 | |
// Length: 119 Max Shannon For Length: 6.726750536417187 | |
// Length: 120 Max Shannon For Length: 6.7568905956085334 | |
// Length: 121 Max Shannon For Length: 6.770102906696089 | |
// Length: 122 Max Shannon For Length: 6.783196353956342 | |
// Length: 123 Max Shannon For Length: 6.7799128793229695 | |
// Length: 124 Max Shannon For Length: 6.776776955548153 | |
// Length: 125 Max Shannon For Length: 6.853784284662096 | |
// Length: 126 Max Shannon For Length: 6.786803733023735 | |
// Length: 127 Max Shannon For Length: 6.799708308819395 | |
// Length: 128 Max Shannon For Length: 6.837852441389348 | |
// Length: 129 Max Shannon For Length: 6.819328902693293 | |
// Length: 130 Max Shannon For Length: 6.806983197643841 | |
// Length: 131 Max Shannon For Length: 6.850216894667223 | |
// Length: 132 Max Shannon For Length: 6.87200860797842 | |
// Length: 133 Max Shannon For Length: 6.844756119711722 | |
// Length: 134 Max Shannon For Length: 6.86079236206728 | |
// Length: 135 Max Shannon For Length: 6.869408189643443 | |
// Length: 136 Max Shannon For Length: 6.866874605956213 | |
// Length: 137 Max Shannon For Length: 6.91733947345567 | |
// Length: 138 Max Shannon For Length: 6.876640398807152 | |
// Length: 139 Max Shannon For Length: 6.931890713011292 | |
// Length: 140 Max Shannon For Length: 6.881033820500954 | |
// Length: 141 Max Shannon For Length: 6.9107239587357245 | |
// Length: 142 Max Shannon For Length: 6.899678281446046 | |
// Length: 143 Max Shannon For Length: 6.916830165434596 | |
// Length: 144 Max Shannon For Length: 6.928571616010637 | |
// Length: 145 Max Shannon For Length: 6.935014089985111 | |
// Length: 146 Max Shannon For Length: 6.943249216414265 | |
// Length: 147 Max Shannon For Length: 6.954774385652684 | |
// Length: 148 Max Shannon For Length: 6.9475960176413585 | |
// Length: 149 Max Shannon For Length: 6.945645785548319 | |
// Length: 150 Max Shannon For Length: 6.962152023829204 | |
// Length: 151 Max Shannon For Length: 6.999994143298573 | |
// Length: 152 Max Shannon For Length: 6.979803253560918 | |
// Length: 153 Max Shannon For Length: 6.9648722381033314 | |
// Length: 154 Max Shannon For Length: 6.997242547160326 | |
// Length: 155 Max Shannon For Length: 6.995416179439883 | |
// Length: 156 Max Shannon For Length: 7.011332427181728 | |
// Length: 157 Max Shannon For Length: 7.022296624674024 | |
// Length: 158 Max Shannon For Length: 7.010966428515783 | |
// Length: 159 Max Shannon For Length: 7.03140567539651 | |
// Length: 160 Max Shannon For Length: 7.029710047998843 | |
// Length: 161 Max Shannon For Length: 7.065358570647751 | |
// Length: 162 Max Shannon For Length: 7.051239586204586 | |
// Length: 163 Max Shannon For Length: 7.025078537653401 | |
// Length: 164 Max Shannon For Length: 7.035875861312226 | |
// Length: 165 Max Shannon For Length: 7.05711282025397 | |
// Length: 166 Max Shannon For Length: 7.0481438740789 | |
// Length: 167 Max Shannon For Length: 7.06328647807687 | |
// Length: 168 Max Shannon For Length: 7.054490711456377 | |
// Length: 169 Max Shannon For Length: 7.072419229155986 | |
// Length: 170 Max Shannon For Length: 7.087303362595544 | |
// Length: 171 Max Shannon For Length: 7.06697532190344 | |
// Length: 172 Max Shannon For Length: 7.087516716873644 | |
// Length: 173 Max Shannon For Length: 7.081914065736993 | |
// Length: 174 Max Shannon For Length: 7.0894390418008575 | |
// Length: 175 Max Shannon For Length: 7.079670826068579 | |
// Length: 176 Max Shannon For Length: 7.121307897021811 | |
// Length: 177 Max Shannon For Length: 7.097493826894713 | |
// Length: 178 Max Shannon For Length: 7.11893694217803 | |
// Length: 179 Max Shannon For Length: 7.113622131976591 | |
// Length: 180 Max Shannon For Length: 7.1390210129722895 | |
// Length: 181 Max Shannon For Length: 7.1337427793125245 | |
// Length: 182 Max Shannon For Length: 7.135407620908504 | |
// Length: 183 Max Shannon For Length: 7.139990070512659 | |
// Length: 184 Max Shannon For Length: 7.160763654414829 | |
// Length: 185 Max Shannon For Length: 7.140761663183922 | |
// Length: 186 Max Shannon For Length: 7.157333273427108 | |
// Length: 187 Max Shannon For Length: 7.160452414398372 | |
// Length: 188 Max Shannon For Length: 7.166186989929487 | |
// Length: 189 Max Shannon For Length: 7.16271980515056 | |
// Length: 190 Max Shannon For Length: 7.168462647770479 | |
// Length: 191 Max Shannon For Length: 7.158580660496478 | |
// Length: 192 Max Shannon For Length: 7.189129167387839 | |
// Length: 193 Max Shannon For Length: 7.193392011316489 | |
// Length: 194 Max Shannon For Length: 7.1861774684423185 | |
// Length: 195 Max Shannon For Length: 7.182946275276996 | |
// Length: 196 Max Shannon For Length: 7.192491030328654 | |
// Length: 197 Max Shannon For Length: 7.204464700134065 | |
// Length: 198 Max Shannon For Length: 7.208729284144531 | |
// Length: 199 Max Shannon For Length: 7.2131841054356665 | |
// Length: 200 Max Shannon For Length: 7.206307314753107 | |
// Length: 201 Max Shannon For Length: 7.228068855314988 | |
// Length: 202 Max Shannon For Length: 7.2249947748095575 | |
// Length: 203 Max Shannon For Length: 7.236668183152398 | |
// Length: 204 Max Shannon For Length: 7.229951506155368 | |
// Length: 205 Max Shannon For Length: 7.2415560140868145 | |
// Length: 206 Max Shannon For Length: 7.230000041662311 | |
// Length: 207 Max Shannon For Length: 7.228440278724 | |
// Length: 208 Max Shannon For Length: 7.2303703070313805 | |
// Length: 209 Max Shannon For Length: 7.264635088956584 | |
// Length: 210 Max Shannon For Length: 7.267700577138411 | |
// Length: 211 Max Shannon For Length: 7.270769567813106 | |
// Length: 212 Max Shannon For Length: 7.25497393330617 | |
// Length: 213 Max Shannon For Length: 7.285064373696207 | |
// Length: 214 Max Shannon For Length: 7.260067220005546 | |
// Length: 215 Max Shannon For Length: 7.262009942552326 | |
// Length: 216 Max Shannon For Length: 7.259426622493767 | |
// Length: 217 Max Shannon For Length: 7.296023352220268 | |
// Length: 218 Max Shannon For Length: 7.289906056398519 | |
// Length: 219 Max Shannon For Length: 7.279219365477972 | |
// Length: 220 Max Shannon For Length: 7.284613293001269 | |
// Length: 221 Max Shannon For Length: 7.284354086472211 | |
// Length: 222 Max Shannon For Length: 7.2819184000851624 | |
// Length: 223 Max Shannon For Length: 7.290700628571347 | |
// Length: 224 Max Shannon For Length: 7.3161089398374575 | |
// Length: 225 Max Shannon For Length: 7.293694302289671 | |
// Length: 226 Max Shannon For Length: 7.301222269870319 | |
// Length: 227 Max Shannon For Length: 7.3132034431808615 | |
// Length: 228 Max Shannon For Length: 7.297630803562538 | |
// Length: 229 Max Shannon For Length: 7.32374920286853 | |
// Length: 230 Max Shannon For Length: 7.308321029111181 | |
// Length: 231 Max Shannon For Length: 7.314783240475309 | |
// Length: 232 Max Shannon For Length: 7.329837352830225 | |
// Length: 233 Max Shannon For Length: 7.3243816918181555 | |
// Length: 234 Max Shannon For Length: 7.338188116963812 | |
// Length: 235 Max Shannon For Length: 7.345478701801287 | |
// Length: 236 Max Shannon For Length: 7.317879437009522 | |
// Length: 237 Max Shannon For Length: 7.314738607475037 | |
// Length: 238 Max Shannon For Length: 7.349547017464199 | |
// Length: 239 Max Shannon For Length: 7.348401954351859 | |
// Length: 240 Max Shannon For Length: 7.3441462205003685 | |
// Length: 241 Max Shannon For Length: 7.347313558122917 | |
// Length: 242 Max Shannon For Length: 7.3783922144668646 | |
// Length: 243 Max Shannon For Length: 7.345413378011238 | |
// Length: 244 Max Shannon For Length: 7.373200042409974 | |
// Length: 245 Max Shannon For Length: 7.348723245054381 | |
// Length: 246 Max Shannon For Length: 7.386441385341404 | |
// Length: 247 Max Shannon For Length: 7.3630699642555895 | |
// Length: 248 Max Shannon For Length: 7.395452661071203 | |
// Length: 249 Max Shannon For Length: 7.36940494401201 | |
// Length: 250 Max Shannon For Length: 7.3546083345842135 | |
// Length: 251 Max Shannon For Length: 7.382644998061821 | |
// Length: 252 Max Shannon For Length: 7.380440129873306 | |
// Length: 253 Max Shannon For Length: 7.38995365367726 | |
// Length: 254 Max Shannon For Length: 7.385698405291546 | |
// Length: 255 Max Shannon For Length: 7.3731627388435435 | |
// Length: 256 Max Shannon For Length: 7.373813427641414 | |
// Length: 257 Max Shannon For Length: 7.381874500463165 | |
// Length: 258 Max Shannon For Length: 7.388869018871726 | |
// Length: 259 Max Shannon For Length: 7.390152833926704 | |
// Length: 260 Max Shannon For Length: 7.39231574561259 | |
// Length: 261 Max Shannon For Length: 7.395497375780751 | |
// Length: 262 Max Shannon For Length: 7.435833593024914 | |
// Length: 263 Max Shannon For Length: 7.411319559535811 | |
// Length: 264 Max Shannon For Length: 7.423888295388285 | |
// Length: 265 Max Shannon For Length: 7.410041473897199 | |
// Length: 266 Max Shannon For Length: 7.4160376985940415 | |
// Length: 267 Max Shannon For Length: 7.431806781881409 | |
// Length: 268 Max Shannon For Length: 7.406410132549285 | |
// Length: 269 Max Shannon For Length: 7.442991544616227 | |
// Length: 270 Max Shannon For Length: 7.40902388399974 | |
// Length: 271 Max Shannon For Length: 7.432558266382237 | |
// Length: 272 Max Shannon For Length: 7.4453000085282905 | |
// Length: 273 Max Shannon For Length: 7.432303798341826 | |
// Length: 274 Max Shannon For Length: 7.441778296361511 | |
// Length: 275 Max Shannon For Length: 7.451203035566737 | |
// Length: 276 Max Shannon For Length: 7.425305525508992 | |
// Length: 277 Max Shannon For Length: 7.430859438626555 | |
// Length: 278 Max Shannon For Length: 7.436017916085252 | |
// Length: 279 Max Shannon For Length: 7.448248820681198 | |
// Length: 280 Max Shannon For Length: 7.444683586555502 | |
// Length: 281 Max Shannon For Length: 7.447832181406375 | |
// Length: 282 Max Shannon For Length: 7.453653558063473 | |
// Length: 283 Max Shannon For Length: 7.451802412320858 | |
// Length: 284 Max Shannon For Length: 7.4646470313698785 | |
// Length: 285 Max Shannon For Length: 7.46431288968555 | |
// Length: 286 Max Shannon For Length: 7.470855077946377 | |
// Length: 287 Max Shannon For Length: 7.4692667159030455 | |
// Length: 288 Max Shannon For Length: 7.469183551691875 | |
// Length: 289 Max Shannon For Length: 7.47660894364903 | |
// Length: 290 Max Shannon For Length: 7.47788158988066 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment