Rubrik: Variablen/Strings · Sonstiges | VB-Versionen: VB4, VB5, VB6 | 03.05.05 |
Zufallszahlen: Wiederholung einer Folge Zufallszahlen mit RND und RANDOMIZE wiederholen | ||
Autor: Manfred Bohn | Bewertung: | Views: 12.465 |
ohne Homepage | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Mit den VB-Funktionen RND und RANDOMIZE kann man gleichverteilte Zufallszahlen erzeugen, die im Bereich 0 <= x < 1 liegen.
Wenn man eine Folge von Zufallszahlen noch einmal (oder mehrmals) wiederholen möchte, kann man ebenfalls diese Funktionen verwenden.
Wie es geht, erklärt die VB-Dokumentation:
Wenn Sie Folgen von Zufallszahlen wiederholen möchten, rufen Sie Rnd mit einem negativen Argument auf, unmittelbar bevor Sie Randomize mit einem numerischen Argument verwenden. Durch Verwenden von Randomize mit demselben Wert für Zahl wird die vorherige Folge nicht wiederholt.
Alles klar ?
Wie das gemeint ist, zeigt das folgende Beispiel:
Dim Random_Number_Init As Double ' Startwert der Zufallszahlenfolge Dim reg(1 To 1000) As Double ' Speicher zum Testen der Zufallsfolge Dim i As Long ' Loop Dim r As Double ' Für Anforderung einer bestimmten Zufallszahlenfolge ' die gleiche bei jedem Programmaufruf .... Random_Number_Init = 100.5 ' eine andere bei jedem Programmaufruf .... ' Random_Number_Init = Timer ' Zufallszahlengenerator vorbereiten ' für sich wiederholende Folgen r = Rnd(-1) ' Folge von Zufallszahlen anfordern (Startwert) Randomize Random_Number_Init ' 1000 Zufallszahlen abfragen und speichern For i = 1 To 1000 reg(i) = Rnd Next i ' Reset des Zufallszahlengenerators r = Rnd(-1) ' Folge von Zufallszahlen anfordern Randomize Random_Number_Init ' die Zufallszahlen wiederholen sich jetzt For i = 1 To 1000 r = Rnd ' Zufallszahlen identisch ? If reg(i) <> r Then Stop ' Nanu ! Next i