Zufallszahlen in DOS ermitteln

Ein beliebte Spielerei zum Kennenlernen höherer Programmiersprachen ist das Experimentieren mit Zufallszahlen. RND.DEB erzeugt eine Zufallszahl im Bereich 0 bis 255 und übergibt sie im Errorlevel. Das Programm liest dazu das niederwertige Byte des BIOS-Timerstands, dessen Wert sich mit einer Frequenz von 18,2 Hz ändert. Sie können mit RND den Verlauf diverser Stapeljobs vom »Zufall« beeinflussen lassen. Da der Wert einer Zufallszahl der aktuellen Systemzeit entnommen wird, wiederholt er sich regelmäßig zirka alle 14 Sekunden (255 / 18,2 ≈ 14). Wenn Sie weniger als 255 Zufallszahlen benötigen, teilen Sie einfach den Bereich zur Abfrage des Errorlevels wie in unserem Beispiel WUERFEL.BAT entsprechend auf:

@ECHO OFF
IF ERRORLEVEL 212 GOTO 6
IF ERRORLEVEL 170 GOTO 5
IF ERRORLEVEL 127 GOTO 4
IF ERRORLEVEL 85 GOTO 3
IF ERRORLEVEL 42 GOTO 2
:1
ECHO 1
GOTO ENDE
:2
ECHO 2
GOTO ENDE
:3
ECHO 3
GOTO ENDE
:4
ECHO 4
GOTO ENDE
:5
ECHO 5
GOTO ENDE
:6
ECHO 6
:ENDE

Ist die Durchlaufrate der Zufallszahl zu gering, müssen Sie den Bereich noch feiner aufteilen und unterschiedliche Errorlevel ein gleiches Label zwischen 1 bis 6 wählen lassen.

Name: RND.DEB
Funktion: Erzeugt eine Zufallszahl im Bereich 0 bis 255.
Übersetzung: DEBUG <RND.DEB
Prüfsumme: 1AD6
Anwendung: RNDIF ERRORLEVEL #

# = 0 … 255

Einschränkungen: ./.
A
MOV AH,0            ;100
INT 1A              ;102
MOV AL,DL           ;104
MOV AH,4C           ;106
INT 21              ;108

RCX
A
NRND.COM
W
Q

Quelle: 200 Utilities für PC-/MS-DOS von Gerhard Schild und Thomas Jannot