Wie verwende ich Zufall in BATCH-Skript?
windows
random
windows-xp
batch-file
IAdapter
quelle
quelle
Antworten:
%RANDOM%
gibt Ihnen eine Zufallszahl zwischen 0 und 32767.Mit einem Ausdruck wie
SET /A test=%RANDOM% * 100 / 32768 + 1
können Sie den Bereich nach Belieben ändern (hier ist der Bereich [1… 100] anstelle von [0… 32767]).quelle
SETLOCAL ENABLEDELAYEDEXPANSION
und!RANDOM!
anstelle von%RANDOM%
, wie Eugene geschrieben hat.%RANDOM% * (%maxval% - %minval% + 1) / 32768 + %minval%
; nur festgelegtminval
undmaxval
auf die entsprechenden Werte zuerst.Sie können den Nummernbereich steuern mit:
- erzeugt eine Zahl zwischen 0 und 99.
Dieses:
- erzeugt eine Zahl zwischen 1 ~ 100.
quelle
%random% %%100
ist keine magische Syntax, sondern tatsächlich%random % %% 100
mit einem Leerzeichen weniger, wobei das%%
nur ein%
Möglicherweise möchten Sie mehrere Zufallszahlen erhalten und möchten möglicherweise für jeden einen anderen Bereich angeben. Daher sollten Sie eine Funktion definieren. In meinem Beispiel generiere ich Zahlen von 25 bis 30 mit
call:rand 25 30
. Und das Ergebnis ist in,RAND_NUM
nachdem diese Funktion beendet wurde.quelle
quelle
Sie könnten es auf diese Weise tun, was nicht erforderlich ist
EnableDelayedExpansion
Wo ist dein Maximum
max
und womin
ist dein Minimum? Dies ist nicht sehr effizient, da es viele Runden dauern kann, wenn Ihre Reichweite zu klein ist. Dies funktioniert auch nicht für Zahlen größer als 32767.quelle
Angenommen, Sie möchten eine Nummer 1-5. Sie könnten Folgendes verwenden:
Oder Sie könnten verwenden: ~ 1,1 anstelle von: ~ -1,1. Das: ~ -1,1 wird nicht benötigt, reduziert jedoch die Zeit, die benötigt wird, um den richtigen Bereich zu erreichen, erheblich. Angenommen, Sie möchten eine Zahl von 1 bis 50, wir müssen uns zwischen zwei und einer Stelle entscheiden. Verwenden:
Sie können diesem Algorithmus weitere hinzufügen, um zwischen großen Bereichen wie 1-1000 zu wählen.
quelle
goto
wenn Sie einen Liner wie oben haben können? Mit anderen Lösungen können Sie den Bereich explizit angeben. Was ist der Vorteil Ihres Codes?Beispiel "
gibt eine Zufallszahl zwischen 100 und 50 an. Verwenden Sie nur ein Prozentzeichen als Operanden, wenn Sie die Zeile nicht in einem Batch-Skript verwenden!
quelle
quelle
vereinfacht mit mehreren IF-Anweisungen und viel ((()))
quelle
Und nur um für diejenigen, die nicht immer einen schwarzen Bildschirm wollen, völlig zufällig zu sein.
Dadurch ändert sich die Bildschirmfarbe. Beide sind zufällig.
quelle
Wenn Sie durch einen großen Wert dividieren, erhalten Sie nacheinander eine große Anzahl von Duplikaten. Was Sie tun müssen, ist Modulo des% RANDOM% -Wertes zu nehmen:
quelle
Hier ist ein Beispiel, das ich für Sie erstellt habe. Es sollte ein Dialogfeld angezeigt werden, in dem Sie aufgefordert werden, eine Zahl von 1 bis 10 auszuwählen. Abhängig von der von Ihnen ausgewählten Zahl wird ein Zufallszahlenbeispiel für eine von Ihnen benannte Batchdatei generiert. Wenn Sie "1" auswählen, erhalten Sie ein Beispiel für eine zufällige 1-stellige Zahl. Wenn Sie "10" auswählen, erhalten Sie ein Beispiel für eine zufällige 10-stellige Zahl.
quelle
Jetzt mit allen Farben des Dos Regenbogens
quelle
Und um ganz zufällig zu sein, ein völliger Mangel an Ordnung:
SET /A V=%random% %%15 +1
quelle