====== Pseudo-Zufallszahl in bestimmtem Bereich erzeugen ====== Liefert Zufallszahl (Pseudo) zwischen Startwert und Endwert-1 PUB rand(start,end) | rnd, dummy rnd := (dummy? >> start) ** (end << 1) return rnd **[kuroneko]** Ich hab' hier so meine Zweifel. Angenommen ich moechte Zahlen zwischen 31 und 42, **(dummy? >> start)** ist dann entweder 0 oder 1, multipliziert mit einem beliebigen 32bit-Wert liefert immer 0 (**(end << 1)** positiv, e.g. 84 = 42 << 1) oder -1 (**(end << 1)** negativ) zurueck fuer diese Operation. **Aufruf:** zufall := rand(1,7) 'liefert Zahl zwischen 1 und 6 Um zufälligere Zufallszahlen (... die Welt der Zahlen ist schon eigenartig) zu erzeugen, kann man den "seed"-Wert setzen. Zufällig genug für Spiele ist z.B. das "cnt"-Register, also der Systemcounter Man kann die obige Routine jetzt so verändern: PUB rand(start,end,seed) | rnd rnd := (seed? >> start) ** (end << 1) return rnd **Aufruf:** brutaler_zufall := cnt zufall := rand(1,7,brutaler_zufall) 'liefert Zahl zwischen 1 und 6 Wenn man immer die gleiche Reihe an Zufallszahlen benötigt, kann man auch einen Festwert eintragen: zufall := rand(1,7,42) 'liefert Zahl zwischen 1 und 6