TU Chemnitz, Fakultät für Informatik
Lehrstuhl Modellierung u. Simulation
Prof.Dr.Köchel / Flohrer

Erzeugen zufälliger Realisierungen, Arbeitsblatt 4


Der Run - Test


Die von einem beliebigen Zufallszahlen-Generator erzeugte Folge von Elementen x[i], i=1,2,... wird gemäß folgendem Algorithmus in aufsteigend (oder absteigend) geordnete Teilmengen R[k], k=1,2,... -die sogenannten 'RUNS'- zerlegt:
  1. Initialisierung:
    i := 1 {Index der Zahlenfolge}
    k := 1 {Index der Teilmenge, des Runs}
    H[r] := 0 für r=1,2,...,25
    {Feld zur Erfassung des Histogrammes der Run-Längen}
  2. Erzeuge x[i] und ordne x[i] dem Run R[k] als 1.Element zu
  3. Inkrementiere i und erzeuge das nächste x[i]
  4. Gilt x[i] > x[i-1], dann wird auch x[i] dem Run R[k] zugeordnet;
    anschließend Fortsetzung bei Schritt 3
  5. Gilt x[i] <= x[i-1] , dann wird x[i] keinem Run zugeordnet
  6. Ermittle die Anzahl r der Elemente der Menge R[k] (die "Run-Länge")
    und inkrementiere H[r]
  7. Inkrementiere i, inkrementiere k und setze fort mit Schritt 2
Beispiel (zweistellige Zufallszahlen):
29 88 65 87 08 13 50 63 04 23 25 47 57 91 13 52 62 24 19 94 01 ...
[---]  X []  X [------]  X [------------]  X [---]  X [---]  X ...

R[1] = {29,88}  --> r = 2
R[2] = {87}  --> r = 1
R[3] = {13,50,63}  --> r = 3
R[4] = {23,25,47,57,91}  --> r = 5
R[5] = {52,62} --> r = 2
R[6] = {19,94} --> r = 2
...

Wäre {x[i]} eine Folge "echter" Zufallszahlen (also eine Folge unabhängiger, im Intervall (0,1) gleichverteilter Realisierungen), dann würde die Run-Länge r exakt mit der Wahrscheinlichkeit
p[r] = r / ( r + 1 )!
vorkommen, d.h. im Mittel werden p[r] · 100% der beobachteten Runs genau r Elemente beinhalten.
Daß Runs der Länge 1 mit Wkt. ½ auftreten müssen, kann leicht nachgewiesen werden: Die Chancen für ein absteigendes Paar (ergibt r=1) und für ein aufsteigendes Paar (ergibt r>1) sind bei "echten" Zufallszahlen offensichtlich gleich groß !
Lange Runs sind sehr selten; unter 40 000 Runs ist im Mittel nur einer mit r>=8 Elementen. Runs mit mehr als 20 Elementen treten praktisch nie auf!

Von einem Zufallszahlengenerator wird nun gefordert, daß die gelieferte Zahlenfolge bezüglich der Run-Längen das gleiche Verteilungsgesetz wie bei echten Zufallszahlen aufweist.
Der Vergleich der theoretischen Häufigkeiten h[r] := N · p[r] mit den "beobachteten" Häufigkeiten H[r] des Auftretens der einzelnen Run-Längen erfolgt mittels Chiquadrat-Anpassungstest. Hierzu sollten die relativ selten beobachteten "langen" Runs, z.Bsp. alle Runs mit r >= 8 , zu einer Klasse zusammengefaßt werden (Es sollten mindestens 5 Beobachtungen je Klasse vorliegen).

Anmerkungen:

  1. Schritt 5 ist erforderlich, da dasjenige x[i], welches das Ende einer aufsteigenden Folge signalisiert, kein 'gerechter' Anfangswert für den nächsten Run wäre.
  2. Man kann sogar ohne die theoretischen Werte p[r] auskommen, wenn man die Folge x[i] zweimal analysiert: nach aufsteigenden Runs R_up[k] und absteigenden Runs R_down[k]! Dann Test auf Gleichheit beider Verteilungsgesetze.

(Siehe auch Demo-Programm 'runtest.pas' ).

Jens Flohrer; 29.03.1995