Generate a random number with 4 digits only
I have a batch script that generates random numbers from 1 to 10000.
My Batch Script
@echo off
cls
SET /A RAND=%RANDOM%%%10000+1
echo %RAND%
echo.
pauseCurrent Outputs
2532 (4 digits)
253 (3 digits)
25 (2 digits)
2 (1 digits)Expected Outputs
2432 (4 digits)
3431 (4 digits)
9282 (4 digits)
8812 (4 digits)Question
I need the random number to be consisted of 4 digits only and not 1, 2, or 3 digits and always 4.
34 Answers
Generate Random 4-Digit Number Windows Batch Script
You can use a batch script with Windows to complete this task easily as I'll explain below.
Essentially this will. . .
- Use PowerShell's Get-Random function to generate the random number
- The random number value will be in a range of
0000-9999using the-Maximumand-MinimumparametersUse the "0" Custom Specifier—"{0:0000} -f $fRandom" with PowerShell and .NET to ensure the random number value has leading zeros added ensuring it always has 4 digits
Result in the PowerShell random number value being
echo'd as the outputUse a FOR /F loop to take the result of the executed PowerShell script (the random number) within it, and save that result as a variable to use in the batch script for your needs (
%RAND%)
Batch Script
If the random number cannot be 4-digit values with prefixed zeros like 0001, 0011, or 0111 you can change the -Minimum 1000 like that instead but random digits 1-999 will be omitted so the value of 1000 is what you want to use for the -Minimum parameter if that's the case.
@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% EXITFurther Resources
A simple solution could be to take the last digit of four random generated numbers
set "RAND=%random:~-1%%random:~-1%%random:~-1%%random:~-1%" Your could use my batch script:
@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)+%1Then drag in the C:\Windows\System32 Folder and type "random /?" for the syntax.
1You just need to adjust the minimum value and the range on your initial solution.
@echo off
cls
SET /A RAND=%RANDOM%%%9000+1000
echo %RAND%
echo.
pause