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>8

    E]WÄzxHxr
    ÜÜå\ T
    yéàé^C=hC
    ÖUÖçìçé^éK
    QKQOyypE
    82lfl<lflf
    l<F@Fàé\åÜ
    åÜå\å2828[
    Äd>E#'!
    'QÅ{Å?EGEJ
    PSEcìçìàéy
    éàgag7gab\
    b2TNTNTTNTNTTN TNTTNTNT)
    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`f6fff6f282zO
    ztztzJzt
    $
    =*ÄPÄK
    QKQcìçìouJ
    uououEuoC=
    b\3bPJP:ny
    bIJztáÅá\
    áÅáÅáWáÅáÅ
    áWáÅáÅÄPy
    yOyyT
    yyOyë
    óg2,öîÖUÖ
    ÖrxD:4:W]D
    oCvpvFvpv

    Sorry 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.


Anmelden zum Antworten