Genera un número aleatorio con solo 4 dígitos

Genera un número aleatorio con solo 4 dígitos

Tengo un script por lotes que genera números aleatorios del 1 al 10000.

Mi secuencia de comandos por lotes

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

Salidas actuales

2532  (4 digits)

253   (3 digits)

25    (2 digits)

2     (1 digits)

Resultados esperados

2432 (4 digits)

3431 (4 digits)

9282 (4 digits)

8812 (4 digits)

Pregunta

Necesito que el número aleatorio esté formado por solo 4 dígitos y no 1, 2 o 3 dígitos y siempre 4.

Respuesta1

Generar secuencia de comandos por lotes de Windows con números aleatorios de 4 dígitos

Puede utilizar un script por lotes conventanaspara completar esta tarea fácilmente como lo explicaré a continuación.

Esencialmente esta será la voluntad. . .

  1. UsarPowerShell Obtener aleatoriofunción para generar el número aleatorio
    • El valor del número aleatorio estará en un rango de 0000-9999uso de los parámetros -Maximumy-Minimum
  2. Utilizar el"0" Especificador personalizado—"{0:0000} -f $fRandom" conPotencia Shelly .NETOpara garantizar que el valor del número aleatorio tenga ceros a la izquierda, asegurándose de que siempre tenga 4 dígitos

  3. Resultado en elPotencia Shellvalor de número aleatorio que se utiliza echocomo salida

  4. Usar unaPARA /Fbucle para tomar el resultado de lo ejecutadoPotencia Shellguion (el número aleatorio) dentro de él, y guarde ese resultado como una variable para usar en el script por lotes según sus necesidades ( %RAND%)


Guión por lotes

Si el número aleatorio no puede ser valores de 4 dígitos con ceros precedidos como 0001, 0011o 0111puede cambiar el-Minimum 1000así en su lugar, pero 1-999se omitirán dígitos aleatorios para que el valor de1000es lo que desea usar para el -Minimumparámetro si ese es el caso.

 @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

Recursos adicionales

Respuesta2

Una solución sencilla podría ser tomar el último dígito de cuatro números generados aleatoriamente.

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

Respuesta3

Podrías usar mi script por lotes:

@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

Luego arrastre la carpeta C:\Windows\System32 y escriba "random /?" para la sintaxis.

Respuesta4

Sólo necesita ajustar el valor mínimo y el rango en su solución inicial.

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

información relacionada