Generieren Sie eine Zufallszahl mit nur 4 Ziffern

Generieren Sie eine Zufallszahl mit nur 4 Ziffern

Ich habe ein Batch-Skript, das Zufallszahlen von 1 bis 10.000 generiert.

Mein Batch-Skript

@echo off
cls
SET /A RAND=%RANDOM%%%10000+1
echo %RAND%
echo.
pause

Stromausgänge

2532  (4 digits)

253   (3 digits)

25    (2 digits)

2     (1 digits)

Erwartete Ergebnisse

2432 (4 digits)

3431 (4 digits)

9282 (4 digits)

8812 (4 digits)

Frage

Ich brauche eine Zufallszahl, die nur aus 4 Ziffern besteht, nicht aus 1, 2 oder 3 Ziffern, sondern immer aus 4.

Antwort1

Generieren Sie ein zufälliges 4-stelliges Windows-Batch-Skript

Sie können ein Batch-Skript verwenden mitWindowsum diese Aufgabe problemlos zu erledigen, wie ich weiter unten erkläre.

Im Wesentlichen wird dies...

  1. VerwendenPowerShell ZufallsgeneratorFunktion zum Generieren der Zufallszahl
    • Der Zufallszahlenwert liegt unter 0000-9999Verwendung der Parameter -Maximumund in einem Bereich von-Minimum
  2. Verwenden Sie die"0" Benutzerdefinierter Spezifizierer – "{0:0000} -f $fRandom" mitPower ShellUnd .NETZum sicherzustellen, dass der Zufallszahlenwert führende Nullen enthält, sodass er immer 4 Ziffern hat

  3. Ergebnis in derPower ShellDer Zufallszahlenwert wird echoals Ausgabe verwendet

  4. Benutze einenFÜR /FSchleife, um das Ergebnis der ausgeführtenPower ShellSkript (die Zufallszahl) darin und speichern Sie das Ergebnis als Variable, um es im Batch-Skript für Ihre Zwecke zu verwenden ( %RAND%)


Batch-Skript

Wenn die Zufallszahl nicht aus 4-stelligen Werten mit vorangestellten Nullen wie 0001, 0011, oder 0111bestehen kann, können Sie die-Minimum 1000so, aber zufällige Ziffern 1-999werden weggelassen, so dass der Wert von1000-Minimumist das, was Sie in diesem Fall für den Parameter verwenden möchten .

 @ECHO ON

 SET PSScript=%Temp%\~tmpRandom4Digit.ps1
 IF EXIST "%PSScript%" DEL /Q /F "%PSScript%"

 ECHO $fRandom = Get-Random -Maximum 9999 -Minimum 0000>>"%PSScript%"
 ECHO $Random  = "{0:0000}" -f $fRandom>>"%PSScript%"
 ECHO ECHO $Random>>"%PSScript%"

 SET PowerShellDir=C:\Windows\System32\WindowsPowerShell\v1.0 
 CD /D "%PowerShellDir%" 
 FOR /F "DELIMS=" %%A IN ('Powershell -ExecutionPolicy Bypass -Command "& '%PSScript%'"') DO SET "RAND=%%A"

 echo %RAND%

 EXIT

Weitere Ressourcen

Antwort2

Eine einfache Lösung könnte darin bestehen, die letzte Ziffer von vier zufällig generierten Zahlen zu nehmen

set "RAND=%random:~-1%%random:~-1%%random:~-1%%random:~-1%"

Antwort3

Sie könnten mein Batch-Skript verwenden:

@echo off
if "%1" == "/?" (
echo Usage:
echo.
echo random [min] [max]
echo random /?
echo.
echo Can be used to generate a random number between [min] - [max] and displays the output in the RDM variable.
echo./? can be used to display help
echo.
echo Examples:
echo.
echo random 1 5 - Generates a random number between 1 - 5
echo random /? - Displays help
)
if not "%1" == "/?" set /a rdm=(%random%*%2/32768)+%1

Ziehen Sie dann den Ordner C:\Windows\System32 hinein und geben Sie „random /?“ als Syntax ein.

Antwort4

Sie müssen lediglich den Mindestwert und den Bereich Ihrer ursprünglichen Lösung anpassen.

@echo off
cls
SET /A RAND=%RANDOM%%%9000+1000
echo %RAND%
echo.
pause

verwandte Informationen