RANDOMIZE

FreeBASIC-Referenz » Alphabetische Befehlsreferenz » R » RANDOMIZE

Syntax: RANDOMIZE [Startwert][, Algorithmus]
Typ: Anweisung
Kategorie: mathematische Funktionen

RANDOMIZE initialisiert den Zufallsgenerator.

Der erstellte Zufallsinitialwert ermöglicht der Funktion RND, Zufallszahlen zu generieren, und bestimmt den Algorithmus, welcher verwendet werden soll. Zulässige Werte für 'Algorithmus' sind:

Für jeden Initialwert wird jeder Algorithmus eine bestimmte, reproduzierbare Reihenfolge von Zahlen generieren. Soll bei jedem Aufruf von RANDOMIZE eine andere Zahlenreihenfolge erstellt werden, sollte ein sich verändernder Initialwert übergeben werden - z. B. der Rückgabewert der Funktion TIMER. Wird 'Startwert' ausgelassen oder erhält er den Wert -1.0, dann wird ein auf TIMER basierender Startwert verwendet.

Beachten Sie: Wird TIMER als Initialwert öfter in einer Sekunde aufgerufen, werden immer dieselben Zahlen erstellt. Grundsätzlich ist es nicht nötig, RANDOMIZE öfter als einmal mit einem sich verändernden Übergabeparameter aufzurufen, da die Zahlenreihenfolge der späteren Aufrufe nicht zufälliger sind als die nach dem ersten Aufruf. In den meisten Fällen sollte der Mersenne-Twister-Algorithmus zu einer ausreichend zufälligen Reihenfolge von Zahlen führen, ohne dass der Initialwert zwischen RND-Aufrufen neu belegt werden müsste.

Beim Aufruf von RANDOMIZE mit dem QB-kompatiblen Algorithmus wird ein Teil der Zufallswerte aufbewahrt. Das bedeutet, dass bei mehrmaligen Aufrufen von RANDOMIZE mit demselben Initialwert nicht jedes Mal die gleiche Reihenfolge erzeugt wird. Um eine bestimmte Reihenfolge zu erhalten, muss RND mit einem negativen Übergabeparameter aufgerufen werden.

Beispiel:

'Die C-rand()-Funktion soll verwendet werden
Randomize , 1

'Gibt zehn Zufallszahlen aus
For i As Integer = 1 To 10
     Print Rnd
Next
Sleep

Unterschiede zu QB:

Plattformbedingte Unterschiede:
Algorithmus 5 verwendet unter Windows die CryptApi, unter Linux /dev/urandom. Unter DOS ist der Algorithmus nicht vorhanden, hier wird bei Angabe des Wertes 5 der Standard-Algorithmus verwendet.

Unterschiede zu früheren Versionen von FreeBASIC:
Der Algorithmus 5 existiert erst seit FreeBASIC v0.24.

Unterschiede unter den FB-Dialektformen:
Der Standardalgorithmus hängt vom aktuellen Dialekt ab:

Siehe auch:
RND