Statistik von Binären Dateien          zurück

Dieses Programm untersucht binäre Dateien auf Ihre 0 und 1 Verteilung.

Download neueste Version 10stat.frm

Quellen:

Eine Zufallssequenz oder Zufallsfolge entsteht durch die wiederholte Anwendung eines statistischen Experiments. Eine Zufallssequenz ist im Allgemeinen eine Abfolge von Realisationen einer Zufallsvariablen. Der Begriff wird meistens im Sinne einer Abfolge von zufällig aus einem bestimmten Alphabet oder Zahlenvorrat ausgewählten Zeichen gebraucht.

Die einfachste Zufallssequenz gewinnt man durch einen wiederholten Münzwurf, wenn man einer Seite der Münze die 0 und der anderen die 1 zuordnet. Man kann andere Zufallssequenzen so in eine einfache 0-1-Sequenz umcodieren (dichotomisieren), ohne dass der Zufallscharakter verloren geht.

Beispiel: 1011011010101001110010110011100000011110010100001111010100010011011110110000100010 1010001110111001010111011111110000010011010000110111011110101011000001000111011000 1000000100111110000011111010010001101111001010100000101101000011000110100011001111 0111110001101110010011000000111110010000001100001000000110101010000011000101100001 1100111100100001101111111100100101010011111001000100100001001001000010001010011100 1111011000001010011111110010111110111011000111011010110000011101100111101011001110

Diese Folge wurde durch wiederholten Münzwurf gewonnen. Auffällig ist, wie oft längere zusammenhängende Sequenzen von 0 oder 1 zu finden sind.

Eine Zufallssequenz ist durch eine verschwindende serielle Korrelation oder auch Autokorrelation gekennzeichnet, d.h. der Korrelationskoeffizient zwischen aufeinander folgenden Werten in der Sequenz ist nicht signifikant von Null verschieden.

Viele natürlich vorkommenden zeit- bzw. ortsdiskreten Signale (z.B. DNA, siehe auch DNA-Sequenzanalyse) werden statistisch analysiert, indem man zunächst die Nullhypothese eines zugrunde liegenden Zufallsprozesses postuliert. Kann man diese Hypothese widerlegen, liegen also Korrelationen in der Sequenz vor, weisen diese unter Umständen auf in der Sequenz verborgene Nutzinformation hin. Speziell bei dichtomen Folgen kann man die Sequenzen mit Hilfe des Run-Tests auf Zufälligkeit überprüfen, wobei mit "Run" eine Folge gleicher Ausprägungen in der Sequenz bezeichnet wird. Der Test führt zur Ablehnung, wenn zu wenig, aber auch zu viel Runs in einer Sequenz sind.

Der Run- oder Runs-Test (auch Wald-Wolfowitz-Test) ist ein nichtparametrischer Test auf Stationarität bzw. Nicht-Korrelation in einer Zeitreihe oder anderen Sequenz. Die abzulehnende Nullhypothese ist hier, dass aufeinanderfolgende Werte unkorreliert sind. Ein run oder "Lauf" ist definiert als eine Folge von gleichen Symbolen in einer Symbolsequenz mit endlichem Alphabet.

Aus einer Symbolsequenz muss zunächst eine numerische Reihe erzeugt werden

Zunächst wird der Median der Reihe berechnet und von allen Werten abgezogen. In der resultierenden Reihe werden negative Zahlen durch ein '-' und positive durch ein '+' ersetzt. Für Stichprobenumfänge n1,n2 > 10 (mit n1,n2 gleich der Anzahl der "plus" und der "minus") ist die Wahrscheinlichkeitsverteilung der runs ungefähr normal mit Mittelwert

UM = 2 * n1*n2 /(n1+n2) + 1

und Varianz

varianz = 2*n1*n2*(2*n1*n2 – n1 – n2) / (n1 + n2) / (n1 + n2) / (n1 + n2 – 1)

Die Testgröße z berechnet sich nun nach:

z = ( U – UM ) / Wurzel aus Varianz

wobei U die gemessene Anzahl der "runs" von '-' und '+' in der Reihe ist. z ist ungefähr standardnormalverteilt.

Der Run-Test ist nicht so mächtig wie der Kolmogorov-Test oder der Chi-Quadrat Test, kann aber mit letzterem kombiniert werden, da beide asymptotisch unabhängig voneinander sind.

Beispiel

13 3 14 14 1 14 3 8 14 17 9 14 13 2 16 1 3 12 13 14

Median 13



0 -10 1 1 -12 1 -10 -5 1 4 -4 1 0 -11 3 -12 -10 -1 0 1



+ - + + - + - - + + - + + - + - - - + +



# runs bzw U: 13

# '+': 11

# '-': 9

= (2*11*9)/(11+9) + 1 = 10,9

= ... = 4,6

σU = 2,1

z = (13 - 10,9) / 2,1 = 1.0

Entscheidung: Die Hypothese wird nicht abgelehnt. Die Elemente der Stichprobe sind vermutlich zufällig entnommen worden.

Siehe auch: http://www.itl.nist.gov/div898/handbook/eda/section3/eda35d.htm

http://www.wu-wien.ac.at/usr/stat2/melichar/spsspu1/spssk3-9.htm



Bradley, (1968). Distribution-Free Statistical Tests, Chapter 12.

------------------------------------------------------------------------------------------------------------

Hinter dem Befehlsfeld 01 Stat steht folgender Programmcode:

10stat.frm

Befehl Zahl 0,1

Befehl Paare

Befehl Sequenz 0

Befehl Sequenz 1

Befehl Münze

Befehl Münze + 0

Befehl 10Folge

Befehl Statistik noch nicht programmiert

VERSION 2.00

Begin Form Form1

Caption = "10 Statistik "

ClientHeight = 4200

ClientLeft = 1590

ClientTop = 1590

ClientWidth = 7575

Height = 4665

Left = 1530

LinkTopic = "Form1"

ScaleHeight = 4200

ScaleWidth = 7575

Top = 1185

Width = 7695

WindowState = 2 'Auf Vollbild

Begin CommandButton Befehl15

Caption = "Echte Muenze"

Height = 375

Left = 6600

TabIndex = 48

Top = 2040

Width = 1575

End

Begin CommandButton Befehl14

Caption = "Chaitin BB"

Height = 375

Left = 8280

TabIndex = 47

Top = 3480

Width = 975

End

Begin CommandButton Befehl13

Caption = "Chaitin BY"

Height = 375

Left = 8280

TabIndex = 46

Top = 3000

Width = 975

End

Begin TextBox Text30

FontBold = -1 'True

FontItalic = 0 'False

FontName = "MS Sans Serif"

FontSize = 9.75

FontStrikethru = 0 'False

FontUnderline = 0 'False

Height = 1575

Left = 2520

MultiLine = -1 'True

TabIndex = 45

Text = "Autor : R.Hoffmann, email: ReinerHoffmannKC@t-online.de Homepage: http://www.madeasy.de DoppelKlicken Sie in das Textfeld und es verschwindet wieder."

Top = 6480

Visible = 0 'False

Width = 4095

End

Begin CommandButton Befehl12

Caption = "Info"

Height = 375

Left = 7200

TabIndex = 44

Top = 5880

Width = 975

End

Begin CommandButton Befehl11

Caption = "Chaitin A"

Height = 375

Left = 7200

TabIndex = 43

Top = 2520

Width = 975

End

Begin CommandButton Befehl10

Caption = "Chaitin B"

Height = 375

Left = 8280

TabIndex = 42

Top = 2520

Width = 975

End

Begin CommandButton Befehl9

Caption = "M�nze + 0"

Height = 372

Left = 8280

TabIndex = 40

Top = 4680

Width = 972

End

Begin TextBox Text28

Height = 372

Left = 5160

TabIndex = 39

Text = "11"

Top = 1560

Width = 972

End

Begin TextBox Text27

Height = 372

Left = 5160

TabIndex = 38

Text = "12"

Top = 2040

Width = 972

End

Begin TextBox Text26

Height = 372

Left = 3960

TabIndex = 37

Text = "01"

Top = 1560

Width = 972

End

Begin TextBox Text25

Height = 372

Left = 3960

TabIndex = 36

Text = "02"

Top = 2040

Width = 972

End

Begin CommandButton Befehl8

Caption = "Sequenz1"

Height = 372

Left = 6240

TabIndex = 35

Top = 4920

Width = 972

End

Begin CommandButton Befehl7

Caption = "Muenze"

Height = 372

Left = 8280

TabIndex = 34

Top = 2040

Width = 972

End

Begin TextBox Text24

Height = 372

Left = 5160

TabIndex = 33

Text = "1A"

Top = 5880

Width = 972

End

Begin TextBox Text23

Height = 372

Left = 5160

TabIndex = 32

Text = "19"

Top = 5400

Width = 972

End

Begin TextBox Text22

Height = 372

Left = 5160

TabIndex = 31

Text = "18"

Top = 4920

Width = 972

End

Begin TextBox Text21

Height = 372

Left = 5160

TabIndex = 30

Text = "17"

Top = 4440

Width = 972

End

Begin TextBox Text20

Height = 372

Left = 5160

TabIndex = 29

Text = "16"

Top = 3960

Width = 972

End

Begin TextBox Text19

Height = 372

Left = 5160

TabIndex = 28

Text = "15"

Top = 3480

Width = 972

End

Begin TextBox Text18

Height = 372

Left = 5160

TabIndex = 27

Text = "14"

Top = 3000

Width = 972

End

Begin TextBox Text17

Height = 372

Left = 5160

TabIndex = 26

Text = "13"

Top = 2520

Width = 972

End

Begin CommandButton Befehl6

Caption = "Sequenz0"

Height = 372

Left = 2760

TabIndex = 25

Top = 4920

Width = 972

End

Begin CommandButton Befehl5

Caption = "Statistik"

Height = 372

Left = 2640

TabIndex = 24

Top = 3480

Width = 972

End

Begin CommandButton Befehl4

Caption = "10Folge"

Height = 372

Left = 8280

TabIndex = 19

Top = 5160

Width = 972

End

Begin CommandButton Befehl1

Caption = "Paare"

Height = 372

Left = 1560

TabIndex = 18

Top = 3480

Width = 972

End

Begin TextBox Text16

Height = 372

Left = 120

TabIndex = 17

Text = "L�nge"

Top = 3000

Width = 972

End

Begin TextBox Text15

Height = 372

Left = 3960

TabIndex = 16

Text = "0A"

Top = 5880

Width = 972

End

Begin TextBox Text14

Height = 372

Left = 3960

TabIndex = 15

Text = "09"

Top = 5400

Width = 972

End

Begin TextBox Text13

Height = 372

Left = 3960

TabIndex = 14

Text = "08"

Top = 4920

Width = 972

End

Begin TextBox Text12

Height = 372

Left = 3960

TabIndex = 13

Text = "07"

Top = 4440

Width = 972

End

Begin TextBox Text11

Height = 372

Left = 3960

TabIndex = 12

Text = "06"

Top = 3960

Width = 972

End

Begin TextBox Text10

Height = 372

Left = 3960

TabIndex = 11

Text = "05"

Top = 3480

Width = 972

End

Begin TextBox Text9

Height = 372

Left = 3960

TabIndex = 10

Text = "04"

Top = 3000

Width = 972

End

Begin TextBox Text8

Height = 372

Left = 3960

TabIndex = 9

Text = "03"

Top = 2520

Width = 972

End

Begin TextBox Text7

Height = 372

Left = 1560

TabIndex = 8

Text = "00"

Top = 1560

Width = 972

End

Begin TextBox Text6

Height = 372

Left = 1560

TabIndex = 7

Text = "01"

Top = 2040

Width = 972

End

Begin TextBox Text5

Height = 372

Left = 1560

TabIndex = 6

Text = "10"

Top = 2520

Width = 972

End

Begin TextBox Text2

Height = 372

Left = 1560

TabIndex = 5

Text = "11"

Top = 3000

Width = 972

End

Begin TextBox Text4

Height = 372

Left = 120

TabIndex = 4

Text = "1"

Top = 2040

Width = 972

End

Begin TextBox Text3

Height = 372

Left = 120

TabIndex = 3

Text = "0"

Top = 1560

Width = 972

End

Begin CommandButton Befehl3

Caption = "Zahl 0, 1 "

Height = 372

Left = 120

TabIndex = 2

Top = 3480

Width = 972

End

Begin TextBox Text1

Height = 1212

Left = 2400

MultiLine = -1 'True

ScrollBars = 1 'Horizontal

TabIndex = 1

Top = 240

Width = 6732

End

Begin CommandButton Befehl2

Caption = "Ende"

Height = 372

Left = 8280

TabIndex = 0

Top = 5880

Width = 972

End

Begin Label Bezeichnung5

Caption = "zb Sequenzen"

Height = 372

Left = 7800

TabIndex = 41

Top = 1560

Width = 1572

End

Begin Label Bezeichnung4

Alignment = 2 'Mitte

BackColor = &H00E0FFFF&

BorderStyle = 1 'nicht �nderbar, einfach

Caption = "00"

Height = 372

Left = 1200

TabIndex = 23

Top = 1560

Width = 372

End

Begin Label Bezeichnung3

Alignment = 2 'Mitte

BackColor = &H00E0FFFF&

BorderStyle = 1 'nicht �nderbar, einfach

Caption = "01"

Height = 372

Left = 1200

TabIndex = 22

Top = 2040

Width = 372

End

Begin Label Bezeichnung2

Alignment = 2 'Mitte

BackColor = &H00E0FFFF&

BorderStyle = 1 'nicht �nderbar, einfach

Caption = "10"

Height = 372

Left = 1200

TabIndex = 21

Top = 2520

Width = 372

End

Begin Label Bezeichnung1

Alignment = 2 'Mitte

BackColor = &H00E0FFFF&

BorderStyle = 1 'nicht �nderbar, einfach

Caption = "11"

Height = 372

Left = 1200

TabIndex = 20

Top = 3000

Width = 372

End

End



Sub Befehl1_Click ()

s = text1.Text

Rem diese Funktion soll eine 01 Datei untersuchen

Rem Sie soll die Zahl der 00 Paare zur�ckgeben

Rem io,oi,oo Zahl der anderen Paare

Dim n As Integer

Dim temp As String, char As String: Rem * 2: Rem was hei�t das ?

oozaehler = 0

oizaehler = 0

iozaehler = 0

iizaehler = 0

temp = RTrim$(LTrim$(s))

For n = 1 To Len(temp) Step 2

char = Mid$(temp, n, 2)

Select Case char

Case Is = "00"

oozaehler = oozaehler + 1

Case Is = "01"

oizaehler = oizaehler + 1

Case Is = "10"

iozaehler = iozaehler + 1

Case Is = "11"

iizaehler = iizaehler + 1

End Select

Next n

text7.Text = oozaehler

text6.Text = oizaehler

text5.Text = iozaehler

text2.Text = iizaehler

End Sub



Sub Befehl10_Click ()



Rem Chaitin , ein bekannter Zufallsforscher gab in einem Aufsatz folgende Sequenz an

Rem Lit chaitin G.J. 1975 scientific American 232 S 47 -52

t = "01101100110111100010"

text1.Text = t







End Sub



Sub Befehl11_Click ()

Rem Chaitin , ein bekannter Zufallsforscher gab in einem Aufsatz folgende Sequenz an

Rem Lit chaitin G.J. 1975 scientific American 232 S 47 -52

t = "01010101010101010101"

Rem t = t + LTrim$(Str$(M%))



text1.Text = t



End Sub



Sub Befehl12_Click ()

text30.Visible = True

End Sub



Sub Befehl13_Click ()



Rem Chaitin , ein bekannter Zufallsforscher gab in einem Aufsatz folgende Sequenz an

Rem 01101100110111100010

Rem Lit chaitin G.J. 1975 scientific American 232 S 47 -52

Rem Diese Folge wurde ver�ndert , so da� nach jeder Ziffer ihr Gegenteil folgt,



t = "0110100110100101101001101010100101011001"

text1.Text = t

Rem Wie man zb an Hand der ungleichen Paarverteilung gut erkennen kann , wird der Zufall weniger

Rem Obwohl auf den ersten Blick ohne Kenntnis der Entstehung

Rem vielleicht sogar mehr Zufall zu erwarten ist





End Sub



Sub Befehl14_Click ()



Rem Chaitin , ein bekannter Zufallsforscher gab in einem Aufsatz folgende Sequenz an

Rem Lit chaitin G.J. 1975 scientific American 232 S 47 -52

Rem BB ,die orginalfolge von Chaitin wird einfach 2 * hintereinander geschrieben

t = "0110110011011110001001101100110111100010"

text1.Text = t





End Sub



Sub Befehl15_Click ()

Rem Zufallszahl die durch mehrfachen echten M�nzwurf zur Erzeugung einer Zufallsfolge von 0 und 1

Rem ermittelt wurde.

t = "101101101010100111001011001110000001111001010000111101010001001101111011000010001010100011101110010101110111111100000100110100001101110111101010110000010001110110001000000100111110000011111010010001101111001010100000101101000011000110100011001111011111000110111001001100000011111001000000110000100000011010101000001100010110000111001111001000011011111111001001010100111110010001001000010010010000100010100111001111011000001010011111110010111110111011000111011010110000011101100111101011001110"

text1.Text = t

End Sub



Sub Befehl2_Click ()

End

End Sub



Sub Befehl3_Click ()

s = text1.Text

Dim n As Integer

Dim temp As String, char As String * 1

ozaehler = 0

izaehler = 0

temp = RTrim$(LTrim$(s))

For n = 1 To Len(temp)

char = Mid$(temp, n, 1)

Select Case char

Case Is = "0"

ozaehler = ozaehler + 1

Case Is = "1"

izaehler = izaehler + 1

End Select

Next n

text3.Text = ozaehler

text4.Text = izaehler

text16.Text = ozaehler + izaehler

End Sub



Sub Befehl4_Click ()

Rem Dieser Befehl z�hlt im Bin�rsystem von 1 bis 2000

Rem er listet die Zahlen ohne Zwischenraum hintereinander

Rem 012345678... 0.1.10.11.100.101.110 etc

For z = 0 To 2000

t = dezbin(z)

te = te + t

Next z

text1.Text = te

End Sub



Sub Befehl5_Click ()

Rem Hier soll die H�ufigkeit der Paare statistisch bewertet werden.

End Sub



Sub Befehl6_Click ()

s = text1.Text

Rem diese Funktion soll eine 01 Datei untersuchen

Rem Sie soll die Zahl der 000,0000,00000 etc zur�ckgeben

Dim n As Integer

Dim temp As String, char As String: Rem * 2: Rem was hei�t das ?



o1 = 0

o2 = 0

o3 = 0

o4 = 0

o5 = 0

o6 = 0

o7 = 0

o8 = 0

o9 = 0

oa = 0

Rem 00000000001000000000010000000000

Cls

temp = RTrim$(LTrim$(s))



Rem a = 10

a = 10

Rem Print Mid$(temp, 1, 11)

If Mid$(temp, 1, a + 1) = "00000000001" Then oa = oa + 1

Rem Print Mid$(temp, Len(temp) - 10, 11)

If Len(temp) < a Then GoTo a9

If Len(temp) = a And s = "0000000000" Then oa = oa + 1

If Len(temp) = a Then GoTo a9

If Mid$(temp, Len(temp) - 10, 11) = "10000000000" Then oa = oa + 1

For n = 1 To Len(temp)



If Mid$(temp, n, a + 2) = "100000000001" Then oa = oa + 1

Rem Print Mid$(temp, n, a)

Next n



a9:

Rem a = 9

a = 9

Rem 00000000010000000001000000000

Rem Print Mid$(temp, 1, 10)

If Mid$(temp, 1, 10) = "0000000001" Then o9 = o9 + 1

Rem Print Mid$(temp, Len(temp) - 9, 10)

If Len(temp) < a Then GoTo a8

If Len(temp) = a And s = "000000000" Then o9 = o9 + 1

If Len(temp) = a Then GoTo a8

If Mid$(temp, Len(temp) - 9, 10) = "1000000000" Then o9 = o9 + 1

For n = 1 To Len(temp)

If Mid$(temp, n, a + 2) = "10000000001" Then o9 = o9 + 1

Rem Print Mid$(temp, n, a)

Next n



a8:

Rem a = 8

a = 8

Rem 00000000100000000100000000

Rem Print Mid$(temp, 1, a + 1)

If Mid$(temp, 1, a + 1) = "000000001" Then o8 = o8 + 1

Rem Print Mid$(temp, Len(temp) - a, a + 1)

If Len(temp) < a Then GoTo a7

If Len(temp) = a And s = "00000000" Then o8 = o8 + 1

If Len(temp) = a Then GoTo a7

For n = 1 To Len(temp)

If Mid$(temp, n, a + 2) = "1000000001" Then o8 = o8 + 1

Rem Print Mid$(temp, n, a)

Next n



a7:

Rem a = 7

a = 7

Rem 00000000100000000100000000

If Mid$(temp, 1, a + 1) = "00000001" Then o7 = o7 + 1

If Len(temp) < a Then GoTo a6

If Len(temp) = a And s = "0000000" Then o7 = o7 + 1

If Len(temp) = a Then GoTo a6

If Mid$(temp, Len(temp) - a, a + 1) = "10000000" Then o7 = o7 + 1

For n = 1 To Len(temp)

If Mid$(temp, n, a + 2) = "100000001" Then o7 = o7 + 1

Next n



a6:

Rem a = 6

a = 6

Rem 00000010000001000000

If Mid$(temp, 1, a + 1) = "0000001" Then o6 = o6 + 1

If Len(temp) < a Then GoTo a5

If Len(temp) = a And s = "000000" Then o6 = o6 + 1

If Len(temp) = a Then GoTo a5

If Mid$(temp, Len(temp) - a, a + 1) = "1000000" Then o6 = o6 + 1

For n = 1 To Len(temp)

If Mid$(temp, n, a + 2) = "10000001" Then o6 = o6 + 1

Next n



a5:

Rem a = 5

a = 5

Rem 00000100000100000

If Mid$(temp, 1, a + 1) = "000001" Then o5 = o5 + 1

If Len(temp) < a Then GoTo a4

If Len(temp) = a And s = "00000" Then o5 = o5 + 1

If Len(temp) = a Then GoTo a4

If Mid$(temp, Len(temp) - a, a + 1) = "100000" Then o5 = o5 + 1

For n = 1 To Len(temp)

If Mid$(temp, n, a + 2) = "1000001" Then o5 = o5 + 1

Next n



a4:

Rem a = 4

a = 4

Rem 00001000010000

If Mid$(temp, 1, a + 1) = "00001" Then o4 = o4 + 1

If Len(temp) < a Then GoTo a3

If Len(temp) = a And s = "0000" Then o4 = o4 + 1

If Len(temp) = a Then GoTo a3

If Mid$(temp, Len(temp) - a, a + 1) = "10000" Then o4 = o4 + 1

For n = 1 To Len(temp)

If Mid$(temp, n, a + 2) = "100001" Then o4 = o4 + 1

Next n



a3:

a = 3

Rem 00010001000

If Mid$(temp, 1, a + 1) = "0001" Then o3 = o3 + 1

If Len(temp) < a Then GoTo a2

If Len(temp) = a And s = "000" Then o3 = o3 + 1

If Len(temp) = a Then GoTo a2

If Mid$(temp, Len(temp) - a, a + 1) = "1000" Then o3 = o3 + 1

For n = 1 To Len(temp)

If Mid$(temp, n, a + 2) = "10001" Then o3 = o3 + 1

Next n



a2:

a = 2

Rem 00100100

If Mid$(temp, 1, a + 1) = "001" Then o2 = o2 + 1

If Len(temp) < a Then GoTo aeins

If Len(temp) = a And s = "00" Then o2 = o2 + 1

If Len(temp) = a GoTo aeins

If Mid$(temp, Len(temp) - a, a + 1) = "100" Then o2 = o2 + 1

For n = 1 To Len(temp)

If Mid$(temp, n, a + 2) = "1001" Then o2 = o2 + 1

Next n



aeins:

a = 1

Rem 01010

If Mid$(temp, 1, a + 1) = "01" Then o1 = o1 + 1

If Len(temp) < a Then GoTo a0

If Mid$(temp, Len(temp) - a, a + 1) = "10" Then o1 = o1 + 1

For n = 1 To Len(temp)

If Mid$(temp, n, a + 2) = "101" Then o1 = o1 + 1

Next n



a0:



text26.Text = o1

text25.Text = o2

text8.Text = o3

text9.Text = o4

text10.Text = o5

text11.Text = o6

text12.Text = o7

text13.Text = o8

text14.Text = o9

text15.Text = oa

End Sub



Sub Befehl7_Click ()

Rem mehrfacher M�nzwurf zur Erzeugung einer Zufallsfolge von 0 und 1

Randomize

For a = 1 To 20000

M% = Int(2 * Rnd) ' Erzeugt einen Wurf zwischen 0 und 1

t = t + LTrim$(Str$(M%))

Next a

text1.Text = t



End Sub



Sub Befehl8_Click ()

s = text1.Text

Rem diese Funktion soll eine 01 Datei untersuchen

Rem Sie mu� noch an die 00,000,0000 Statistik angepasst werden.

Rem Sie soll die Zahl der 11,111,1111,11111 etc zur�ckgeben

Dim n As Integer

Dim temp As String, char As String: Rem * 2: Rem was hei�t das ?

i3 = 0

i4 = 0

i5 = 0

i6 = 0

i7 = 0

i8 = 0

i9 = 0

ia = 0

Rem 11111111110111111111101111111111

Cls

temp = RTrim$(LTrim$(s))



a = 10

Rem Print Mid$(temp, 1, 11)

If Mid$(temp, 1, a + 1) = "11111111110" Then ia = ia + 1

Rem Print Mid$(temp, Len(temp) - 10, 11)

If Len(temp) < a Then GoTo b9

If Len(temp) = a And s = "1111111111" Then ia = ia + 1

If Len(temp) = a Then GoTo b9



If Mid$(temp, Len(temp) - a, a + 1) = "01111111111" Then ia = ia + 1



For n = 1 To Len(temp)

If Mid$(temp, n, a + 2) = "011111111110" Then ia = ia + 1

Rem Print Mid$(temp, n, a)

Next n





b9:

a = 9

If Mid$(temp, 1, 10) = "1111111110" Then i9 = i9 + 1



If Len(temp) < a Then GoTo b8

If Len(temp) = a And s = "111111111" Then i9 = i9 + 1

If Len(temp) = a Then GoTo b8



If Mid$(temp, Len(temp) - 9, 10) = "0111111111" Then i9 = i9 + 1



For n = 1 To Len(temp)

If Mid$(temp, n, a + 2) = "01111111110" Then i9 = i9 + 1

Next n



b8:

a = 8

Rem 00000000100000000100000000

If Mid$(temp, 1, a + 1) = "111111110" Then i8 = i8 + 1



If Len(temp) < a Then GoTo b7

If Len(temp) = a And s = "11111111" Then i8 = i8 + 1

If Len(temp) = a Then GoTo b7



If Mid$(temp, Len(temp) - a, a + 1) = "011111111" Then i8 = i8 + 1



For n = 1 To Len(temp)

If Mid$(temp, n, a + 2) = "0111111110" Then i8 = i8 + 1

Next n





b7:

a = 7

Rem 00000000100000000100000000

If Mid$(temp, 1, a + 1) = "11111110" Then i7 = i7 + 1



If Len(temp) < a Then GoTo b6

If Len(temp) = a And s = "1111111" Then i7 = i7 + 1

If Len(temp) = a Then GoTo b6



If Mid$(temp, Len(temp) - a, a + 1) = "01111111" Then i7 = i7 + 1

For n = 1 To Len(temp)

If Mid$(temp, n, a + 2) = "011111110" Then i7 = i7 + 1

Next n





b6:

a = 6

Rem 00000010000001000000

If Mid$(temp, 1, a + 1) = "1111110" Then i6 = i6 + 1



If Len(temp) < a Then GoTo b5

If Len(temp) = a And s = "111111" Then i6 = i6 + 1

If Len(temp) = a Then GoTo b5



If Mid$(temp, Len(temp) - a, a + 1) = "0111111" Then i6 = i6 + 1

For n = 1 To Len(temp)

If Mid$(temp, n, a + 2) = "01111110" Then i6 = i6 + 1

Next n





b5:

a = 5

Rem 00000100000100000

If Mid$(temp, 1, a + 1) = "111110" Then i5 = i5 + 1



If Len(temp) < a Then GoTo b4

If Len(temp) = a And s = "11111" Then i5 = i5 + 1

If Len(temp) = a Then GoTo b4



If Mid$(temp, Len(temp) - a, a + 1) = "011111" Then i5 = i5 + 1

For n = 1 To Len(temp)

If Mid$(temp, n, a + 2) = "0111110" Then i5 = i5 + 1

Next n





b4:

a = 4

Rem 00001000010000

If Mid$(temp, 1, a + 1) = "11110" Then i4 = i4 + 1



If Len(temp) < a Then GoTo b3

If Len(temp) = a And s = "1111" Then i4 = i4 + 1

If Len(temp) = a Then GoTo b3



If Mid$(temp, Len(temp) - a, a + 1) = "01111" Then i4 = i4 + 1

For n = 1 To Len(temp)

If Mid$(temp, n, a + 2) = "011110" Then i4 = i4 + 1

Next n



b3:

a = 3

Rem 00010001000

If Mid$(temp, 1, a + 1) = "1110" Then i3 = i3 + 1



If Len(temp) < a Then GoTo b2

If Len(temp) = a And s = "111" Then i3 = i3 + 1

If Len(temp) = a Then GoTo b2



If Mid$(temp, Len(temp) - a, a + 1) = "0111" Then i3 = i3 + 1

For n = 1 To Len(temp)

If Mid$(temp, n, a + 2) = "01110" Then i3 = i3 + 1

Next n





b2:

a = 2

Rem 11011011

If Mid$(temp, 1, a + 1) = "110" Then i2 = i2 + 1

If Len(temp) < a Then GoTo beins

If Len(temp) = a And s = "11" Then i2 = i2 + 1

If Len(temp) = a Then GoTo beins

If Mid$(temp, Len(temp) - a, a + 1) = "011" Then i2 = i2 + 1

For n = 1 To Len(temp)

If Mid$(temp, n, a + 2) = "0110" Then i2 = i2 + 1

Next n



beins:

a = 1

Rem 10101

If Mid$(temp, 1, a + 1) = "10" Then i1 = i1 + 1

If Len(temp) < a Then GoTo b0

If Mid$(temp, Len(temp) - a, a + 1) = "01" Then i1 = i1 + 1

For n = 1 To Len(temp)

If Mid$(temp, n, a + 2) = "010" Then i1 = i1 + 1

Next n





b0:

text28.Text = i1

text27.Text = i2

text17.Text = i3

text18.Text = i4

text19.Text = i5

text20.Text = i6

text21.Text = i7

text22.Text = i8

text23.Text = i9

text24.Text = ia











End Sub



Sub Befehl9_Click ()

Rem mehrfacher M�nzwurf zur Erzeugung einer Zufallsfolge von 0 und 1

Rem Zwischem jeden M�nzwurf wird eine 0 eingef�gt

Randomize

For a = 1 To 10000

M% = Int(2 * Rnd) ' Erzeugt einen Wurf zwischen 0 und 1

t = t + "0" + LTrim$(Str$(M%))

Next a

text1.Text = t





End Sub



Function dezbin (z)

dez = z

Dim bin

Dim X%



If dez >= 2 ^ 32 Then

MsgBox ("Zahl ist gr��er als 32 Bit")

Exit Function

End If





Do

If (dez And 2 ^ X) Then

bin = "1" & bin

Else

bin = "0" & bin

End If

X = X + 1

Loop Until 2 ^ X > dez

dezbin = bin

End Function



Sub info_Click ()

text1.Top = 1000

text1.Width = 4000

text1.Height = 1300

End Sub



Sub Text30_DblClick ()

text30.Visible = False

End Sub