25 lines
497 B
Plaintext
25 lines
497 B
Plaintext
REM >entropy
|
|
PRINT FNentropy("1223334444")
|
|
END
|
|
:
|
|
DEF FNentropy(x$)
|
|
LOCAL unique$, count%, n%, ratio(), u%, i%, j%
|
|
unique$ = ""
|
|
n% = LEN x$
|
|
FOR i% = 1 TO n%
|
|
IF INSTR(unique$, MID$(x$, i%, 1)) = 0 THEN unique$ += MID$(x$, i%, 1)
|
|
NEXT
|
|
u% = LEN unique$
|
|
DIM ratio(u% - 1)
|
|
FOR i% = 1 TO u%
|
|
count% = 0
|
|
FOR j% = 1 TO n%
|
|
IF MID$(unique$, i%, 1) = MID$(x$, j%, 1) THEN count% += 1
|
|
NEXT
|
|
ratio(i% - 1) = (count% / n%) * FNlogtwo(count% / n%)
|
|
NEXT
|
|
= -SUM(ratio())
|
|
:
|
|
DEF FNlogtwo(n)
|
|
= LN n / LN 2
|