Die RANDOM-Funktion liefert einen numerischen Wert, der eine Zufallszahl aus einer Gleichverteilungsmenge darstellt.
Funktionstyp: numerisch.
Format
FUNCTION
RANDOM
[(argument-1)]
Argumente
argument-1 muss, wenn angegeben, null oder eine positive Ganzzahl sein. argument-1 wird als Ausgangswert verwendet, um eine Folge von Zufallszahlen zu erzeugen.
Bei jeder weiteren Referenz auf argument-1 wird eine neue Folge von Zufallszahlen begonnen.
Ist in der ersten Referenz innerhalb der Ablaufeinheit argument-1 nicht angegeben, ist der Ausgangswert 0.
Jede weitere Referenz ohne Angabe von argument-1 liefert die nächste Zahl in der laufenden Folge.
Returnwerte
Der Returnwert ist größer oder gleich null und kleiner als eins.
Für einen vorgegebenen Ausgangswert ist die Folge der Zufallszahlen immer die gleiche.
Der Wertebereich von argument-1, der verschiedene Folgen von Zufallszahlen liefert, liegt zwischen 0 und 231
-
1.Der Fehler-Returnwert ist
-
1.
Beispiel 9-37
IDENTIFICATION DIVISION. PROGRAM-ID. LOTTO. ENVIRONMENT DIVISION. CONFIGURATION SECTION. SPECIAL-NAMES. TERMINAL IS VIDEO. DATA DIVISION. WORKING-STORAGE SECTION. 01 LISTE. 05 ELEM OCCURS 6 INDEXED BY SI, LI. 10 Z PIC Z9 VALUE FROM (1) IS ZERO REPEATED TO END. 10 T PIC XX VALUE FROM (1) IS ", " REPEATED TO END. 01 Z-0 PIC Z9. 01 RAN-VAL PIC V9(18) BINARY. 01 INIT-ARG PIC 9(5) BINARY. 01 ID-1. 02 PIC X(5). 02 D1 PIC 9. 02 PIC X. 02 D2 PIC 9. 02 PIC X. 02 D3 PIC 9. 02 PIC X. 02 D4 PIC 9. 02 PIC X. 02 D5 PIC 9. 02 PIC X(7). 01 D6 PIC 9. PROCEDURE DIVISION. M SECTION. M1. * * Ermittlung eines von Uhrzeit, Datum und Wochentag * abhaengigen Start-Arguments fuer die Random-Funktion * MOVE FUNCTION CURRENT-DATE TO ID-1 ACCEPT D6 FROM DAY-OF-WEEK COMPUTE INIT-ARG = (10 * D1 + 1000 * D2 + 100 * D3 + D4 + 10000 * D5) * D6 * * Ermittlung der ersten Zufallszahl * COMPUTE RAN-VAL = FUNCTION RANDOM (INIT-ARG) * * Durchlaufen der Schleife, bis 6 Elemente in die Liste * eingetragen wurden * PERFORM VARYING LI FROM 1 BY 1 UNTIL LI > 6 * * Durchlaufen der Schleife, bis eine eindeutige Zahl ermittelt * und in das aktuelle Listenelement eingetragen wurde * PERFORM UNTIL Z (LI) NOT ZERO * * Abbildung des Returnwerts der RANDOM-Funktion * auf eine Ganzzahl zwischen 1 und 49 COMPUTE Z-0 = FUNCTION INTEGER (49 * RAN-VAL) + 1 SET SI TO 1 * * Pruefung des Ergebnisses auf Eindeutigkeit * SEARCH ELEM * * Zahl wurde in der Liste nicht gefunden -> Zahl wird eingetragen * AT END MOVE Z-0 TO Z (LI) * * Zahl ist in der Liste bereits enthalten -> neue Zufallszahl * WHEN Z (SI) = Z-0 CONTINUE END-SEARCH * * Ermittlung einer weiteren Zufallszahl * COMPUTE RAN-VAL = FUNCTION RANDOM END-PERFORM END-PERFORM SORT ELEM ASCENDING Z MOVE "." TO T (6) DISPLAY LISTE UPON VIDEO STOP RUN.
Ergebnis: 6 Zahlen zwischen 1 und 49.