Zufälligkeit von Zeichenketten
-
Salve!
Diese beiden Zeichenketten sind von ein und derselben Pseudo-Zufallsfunktion erzeugt worden. Bei der ersten sind die Parameter für den Zufallsbereich für jedes Zeichen gleich, bei der zweiten wechseln die Parameter geringfügig in Abhängigkeit einer Modulodivision der Laufvariablen (die in einer Schleife 1000 Zeichen erzeugt) durch Zahlen wie 2, 3, 5, 7 oder 10.
jetzt meine Frage: Welche der Zeichenketten ist zufälliger (und somit tauglicher für ein kleines Verschlüsselungsprogramm) ?mfg
Cortex
Zeichenkette 1:
c
a799999999
888??;;;;;
;;;;;;^^PP
^^BCCCCCCC
CCCCCCCCCC
CCCCCCCCCC
CCCCCCCCCC
CCCCCCCCCC
CCCCCCCCCC
CCCCCCC]]]
ppaPPB4444
4444444444
4444444444
4444444444
4444444444
4444444GGG
MTTFFFFFFF
F88.o=====
@@@@@@@@@@
@@@@BB^:::
::::,,,,,,
,,,,,,,,,,
OOOOOO@@%=
ggggGG?e9L
L.,,aLT***
*88OOOOOHH
HBB,,,,?11
PW=B^BBBB9
9SSSSSSSSS
SPP-8888AA
AAAAAAAAAA
AAAAAAAA--
G=*GGGGGGG
GGGGGGGGGG
GGIII^PPCC
CCaKKKKKKK
%%%%PGGG88
LL--------
---aaaaaaa
aaaqEEEEEE
EEEEEEEEEE
EEEEEEoo?-
jjjP=ieePo
qq?=KK7777
7777777777
7777777777
22.?Rfffff
ffffffffff
ffffffffff
ffffffffff
ffffffffff
ffffffffff
ffffffffff
ffffffffff
ffffffffff
ffffff777
aaa
aaaaaaP^PL
kkkiiiiBB.
M???aacccc
=ccAAAA555
5555555555
555oEEEEEG
fffq``````
B"""";;;;;
;;;;;;;;;;
;;;;;;;;;;
;;;;;;;;;;
;;;;;;;;;;
;;;;;;;;;;
;;;;;;;;;;
;;;;;;;;;;
;;;;;;Papp
pppppppppp
ppMMT..??=
-WWWWWWWWW
WWWWWWWWGG
cDOOOOOOL@
kkk99"NN00
00NNNaaKKa
GGGL.TT-EE
kkkkkk....B))
4444444aaT
ccccccc???
?EE?000ppp
BGGG
22::%%%%%%
%%%::^YYYY
YYYYYYYYYY
YYYYYYYYYY
YYYYYYYYYY
YYYYYYYYYY
YYYYYYYopp
,,1111.BB`Zeichenkette 2:
)ÄTNT3c
PVÜb7575åÜ
åÜíbíå â^
çáçsyIâÉâÉ
âYâÉâÉâYÜÄ
Ü Ih-]WÜ[
ÜÄÜÄÜ<lflf
l<lbçáç]ãÖ
ãÖã[ãÖãÖããuUCoioi o?oioio?oi oio?oioioD oioio?oioi o?oioio?oi oio?oioioD oioio?oioi o?oioio?o1 7pvFpjpjpE pjpjp@pjpj p@pjpjp@pj pjp@pjpjp[ pjpjp@pjpj p@pjpjp@pj pjp@pjpjpE pjpjp@pjpj p@pjpjp@pj pjp@pjpjpE pjpjp@pjpj p@pjpjp@pj pjp@pjpjpE pjp?EGhêñê ñY/NTNT$çá çáç33EKEK ÖÖÖUÖÖ ÖUÖÖÖUÖ ÖÖUÖÖÖZ ÖÖÖUÖÖ ÖUÖÖÖUÖ ÖÖUÖÖÖZ ÖÖÖUÖÖ ÖUÖÖOYo uouEuouou
uououEuob\
b\;5;{ÅQÅ{
\V\,\V\U0
ïèïèvFvpvp
vF9393_/Y
_Y_/_Y_Y_4
_Y_Y/_Y71
yIysyrxH'!
'îh8hbhbhc
éìhouVÜ8>8E]WÄzxHxr
ÜÜå\ T
yéàé^C=hC
ÖUÖçìçé^éK
QKQOyypE
82lfl<lflf
l<F@Fàé\åÜ
åÜå\å2828[
Äd>E#'!
'QÅ{Å?EGEJ
PSEcìçìàéy
éàgag7gab\
b2TNTNTTNTNT)
TNoio?oioi
o?oioio?oi
[U[+àÇàÇàc
C=C=Cl5/5/
5=dPJ.^X
]W]L|v|v|Q
|v|v|LñêñÉ
âYìçìçìcìç
ìçìcìçìçìh
ìçìçìcìBHB
HIâÉâÉâYâè
ïèïeUOUOU=
hbhbh8qkqk
é^éhnkqAqk
YtzJztöá5 \
Z`Z`0`ZZ \
0`Z`Z`0Z \
Z`0`Z`U
UMGógUOUf6f\
f`f6ff
f6f282zO
ztztzJzt$
=ÄPÄK
QKQcìçìouJ
uououEuoC=
b\3bPJP:ny
bIJztáÅá\
áÅáÅáWáÅáÅ
áWáÅáÅÄPy
yOyyT
yyOyë
óg2,öîÖUÖ
ÖrxD:4:W]D
oCvpvFvpvSorry für das unhandliche Format, aber so sah die Ausgabe aus. hab leider vercheckt, die Absätze sinnvoller zu setzen.
-
Schreib dir ein kleines Programm, das die Häufigkeit jedes Zeichens zählt, fütter das Teil mit 10000 Zeichen, dann stell das dar (z.B. in Datei rausschreiben und Balkendiagramm mit Excel) Da siehst du ziemlich gut ob das Zeug gleichverteilt ist.
Andere Qualitätsmerkmale sind a) höhere Momente (Standardabweichen usw.) und b) Korrelation. Die sind aber für einfaches verwürfeln von Daten 8damit nicht mehr im Klartext lesbar) nicht so wichtig.
-
Gute Idee, das mit der Häufigkeitszählung! Probier ich mal.
ansonsten geht es mir ja auch nur darum, ob es keine Regelmäßigkeiten in Auftreten und Länge dieser zeichenfolgen immer gleicher Zeichen (die in beiden zwar vorkommen, in dem Modulo-teil aber nicht so ausgeprägt wie in dem anderen) vorkommen. Das es zu solchen Häufungen kommt, ist viellicht normal, weil Zufall durchaus nicht so zufällig aussehn kann, wie man's gene hätte ...
-
"Zufall" ist auf dem PC sowieso nur relativ, weil die Generatoren deterministisch und vor allem mit Gedächtnis sind. Wichtig ist also nur: was für eine Anwendung?
Wenn es nur darum geht das es "zufällig aussieht", dann ist rand() und Konsorten ok. Für statistische Anwendungen (bzw. eine Verschlüsselung die einer statistischen/kryptographischen Analyse standhält), muß man schon zu besseren Generatoren greifen. Die Numerical Recipes und der alte Knuth sind gute Quellen, aber da hat sich vielleicht schon was getan...
-
Falls es sich noch nicht erledigt hat kannst du mal bei google nach dem Pokertest suchen. Das ist ein Verfahren um festzustellen wie gut "gemischt" die Zufallszahlen vorkommen. Das Verfahren funktioniert so dass man den Text in Blöcke aufteilt und dann sieht ob wiederholungen gleich oft auftauchen wie sie es wirklich zufällige Zahlen würden.
Bsp:
Nr 1:a7999 -> 3 Gleiche 99999 -> 5 Gleiche 888?? -> 3 Gleiche und 2 Gleiche ;;;;; -> 5 Gleiche ;;;;; -> 5 Gleiche ;^^PP -> 2 * 2 Gleiche
Nr 2.:
)ÄTNT -> 2 Gleiche 3c$*$ -> 2 Gleiche PVÜb7 -> Alle Verschieden 575åÜ -> 2 Gleiche åÜíbí -> 2 Gleiche å â^ -> 2 Gleiche
Also das 2. wahrscheinlich besser. Du kannst es ja mal für beide auszählen (in einem programm ;)) und dann vergleichen. Das 2. was du vergleichen könntest wäre die relative Häufigkeit der einzelnen Buchstaben, was ja oben schon angesprochen wurde.
Wenn du das ganze rechnen möchtest, ist das schon etwas mühsam. Du müsstest die häufigkeit der einzelnen Kombinationen ausrechnen und danach mit den gezählten Werten (mit Hilfe des Chi-Quadrat Tests) vergleichen.