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