Letztes Update am Sa., 31 Mai 2025 13:46:07 +0200 von Andreas Potthoff
RND
- Token: 187 / $BB | Abkürzung: rN | ROM Exec: 57495 / $E097
- Typ: Funktion, numerisch | Funktion: Arithmetik
- Syntax: RND (<numeric>)
Aktion, Hinweise, Tipps, Tricks:
RND erzeugt eine Gleitkommazahl mit einem Wert zwischen 0,0 und 1,0. Der Computer generiert eine Folge von Zufallszahlen, indem er Berechnungen mit einer Startzahl durchführt, die im Computerjargon als Seed bezeichnet wird. Die RND-Funktion wird beim Systemstart gestartet. Das <numeric>-Argument ist ein Dummy-Argument, mit Ausnahme seines Vorzeichens (positiv, null oder negativ). Ist das <numeric>-Argument positiv, wird dieselbe pseudozufällige Zahlenfolge zurückgegeben, beginnend mit einem bestimmten Seed-Wert. Unterschiedliche Seeds ergeben unterschiedliche Zahlenfolgen, aber jede Folge ist wiederholbar, wenn man von derselben Seed-Zahl ausgeht. Eine bekannte Folge von Zufallszahlen ist beim Testen von Programmen hilfreich. Wählt man als <numeric>-Argument Null, generiert RND eine Zahl direkt aus einer freilaufenden Hardware-Uhr (der System-Jiffy-Clock). Negative Argumente führen dazu, dass die RND-Funktion bei jedem Funktionsaufruf neu gestartet wird.
Dieser Speicherort enthält den von der RND-Funktion zurückgegebenen 5-Byte-Gleitkommawert. Er ist zunächst auf einen aus dem ROM kopierten Startwert gesetzt (die fünf Bytes lauten 128, 79, 199, 82, 88 – $80, $4F, $C7, $52, $58). $008B-$008F RND Function Seed Value
Beim Aufruf der Funktion RND(X) hat der numerische Wert von X keinen Einfluss auf die zurückgegebene Zahl, wohl aber sein Vorzeichen. Ist X gleich 0, generiert RND einen Startwert aus Hardware-Timern auf Chipebene. Ist X positiv, gibt RND(X) die nächste Zahl in einer arithmetischen Folge zurück. Diese Folge wiederholt sich so lange, ohne sich zu wiederholen, und ergibt eine so gleichmäßige Zahlenverteilung, dass sie als zufällig angesehen werden kann. Ist X negativ, wird der Startwert in eine Zahl geändert, die einer verschlüsselten Gleitkommadarstellung der Zahl X selbst entspricht.
Bei einem bestimmten Startwert wird immer dieselbe pseudozufällige Zahlenfolge zurückgegeben. Dies kann für Debugging-Zwecke nützlich sein, jedoch nicht, wenn Sie wirklich zufällige Zahlen benötigen.
Die traditionelle Commodore-Methode zur Auswahl eines Zufallsstartwerts verwendet den Ausdruck RND(-TI), hauptsächlich weil RND(0) auf frühen PETs nicht korrekt funktionierte. Obwohl die RND(0)-Form auch auf dem 64er nicht richtig funktioniert (siehe Position 57495 ($E097)), kann der Ausdruck RND(-RND(0)) einen zufälligeren Startwert erzeugen.
Beispiele:
220 PRINT INT(RND(0)*50) (Gibt Zufallszahlen zwischen 0 und 49 zurück) 100 X=INT(RND(1)*6)+INT(RND(1)*6)+2 (Simuliert zwei Würfel) 100 X=INT(RND(1)*1000)+1 (Zufallszahlen zwischen 1 und 1000) 100 X=INT(RND(1)*150)+100 (Zufallszahlen zwischen 100 und 249) 100 X=RND(1)*(U-L)+L (Zufallszahlen zwischen der oberen (U) und unteren (L) Grenze
Befehle | CLOSE, CLR, CMD, CONT, DATA, DEF, DIM, END, FOR, GET, GET#, GOSUB, GOTO, IF, INPUT, INPUT#, LET, LIST, LOAD, NEW, NEXT, ON, OPEN, POKE, PRINT, PRINT#, READ, REM, RESTORE, RETURN, RUN, SAVE, STOP, SYS, VERIFY, WAIT |
Befehle Spezial (Bywords) | FN, GO, NOT, SPC(, TAB(, THEN, TO, STEP |
Arithmetische und logische Operatoren | +, –, *, /, ^, >, =, <, AND, OR |
Funktionen | ABS, ASC, ATN, CHR$, COS, EXP, FRE, INT, LEFT$, LEN, LOG, MID$, PEEK, POS, RIGHT$, RND, SGN, SIN, SQR, STR$, TAN, USR, VAL |
Konstanten und Systemvariablen | Pi, ST, TI, TI$ |