Jak używać losowości w skrypcie BATCH?
windows
random
windows-xp
batch-file
IAdapter
źródło
źródło
Odpowiedzi:
%RANDOM%
daje losową liczbę od 0 do 32767.Używając wyrażenia takiego jak
SET /A test=%RANDOM% * 100 / 32768 + 1
, możesz zmienić zakres na dowolny (tutaj zakres to [1… 100] zamiast [0… 32767]).źródło
SETLOCAL ENABLEDELAYEDEXPANSION
i using!RANDOM!
zamiast%RANDOM%
, jak opublikował Eugene.%RANDOM% * (%maxval% - %minval% + 1) / 32768 + %minval%
; po prostu ustawminval
imaxval
najpierw na odpowiednie wartości.Możesz kontrolować zakres numerów za pomocą:
- wyświetli liczbę z przedziału od 0 do 99.
Ten:
- wyświetli liczbę od 1 do 100.
źródło
%random% %%100
nie jest magiczna składnia, ale w rzeczywistości%random % %% 100
z jedną spacją mniej, gdzie%%
jest po prostu%
Prawdopodobnie będziesz chciał otrzymać kilka liczb losowych i możesz chcieć określić inny zakres dla każdego z nich, więc powinieneś zdefiniować funkcję. W moim przykładzie generuję liczby od 25 do 30 za pomocą
call:rand 25 30
. Wynik jestRAND_NUM
po zakończeniu funkcji.źródło
źródło
Możesz to zrobić w ten sposób, który nie wymaga
EnableDelayedExpansion
gdzie
max
jest Twoje maksimum imin
minimum. Nie jest to zbyt wydajne, ponieważ może zająć dużo rund, jeśli twój zasięg jest zbyt mały. Nie będzie to również działać w przypadku liczb większych niż 32767.źródło
Powiedzmy, że chcesz liczbę 1-5; możesz użyć następujących:
Lub możesz użyć: ~ 1,1 zamiast: ~ -1,1. Wartość: ~ -1,1 nie jest potrzebna, ale znacznie skraca czas potrzebny do trafienia we właściwy zakres. Powiedzmy, że chcesz liczbę 1-50, musimy wybrać między 2 a 1 cyfrą. Posługiwać się:
Możesz dodać więcej do tego algorytmu, aby zdecydować między dużymi zakresami, takimi jak 1-1000.
źródło
goto
skoro możesz mieć taką wkładkę jak powyżej? Inne rozwiązania pozwalają jednoznacznie określić zakres. Jaka jest zaleta twojego kodu?przykład ”
da losową liczbę od 100 do 50. Pamiętaj, aby użyć tylko jednego znaku procentu jako argumentu, jeśli nie używasz linii w skrypcie wsadowym!
źródło
źródło
uproszczone dzięki wielu instrukcjom IF i mnóstwu ((()))
źródło
I po prostu całkowicie przypadkowo dla tych, którzy nie zawsze chcą czarnego ekranu.
Spowoduje to zmianę koloru ekranu, a oba są losowe.
źródło
Jeśli podzielisz przez jakąś dużą wartość, otrzymasz ogromną liczbę duplikatów jeden po drugim. To, co musisz zrobić, to wziąć modulo wartości% RANDOM%:
źródło
oto przykład, który dla ciebie stworzyłem, powinien wyświetlić okno dialogowe z prośbą o wybranie liczby 1-10, w zależności od wybranej liczby, wygeneruje przykład losowej liczby do pliku wsadowego, który nazwałeś. Jeśli wybierzesz "1", otrzymasz przykład losowej liczby jednocyfrowej. jeśli wybierzesz „10”, otrzymasz przykład losowej 10-cyfrowej liczby.
źródło
teraz zawiera wszystkie kolory tęczy dos
źródło
I żeby być całkowicie przypadkowym, totalny brak porządku:
SET /A V=%random% %%15 +1
źródło