Gere um número aleatório com apenas 4 dígitos

Gere um número aleatório com apenas 4 dígitos

Eu tenho um script em lote que gera números aleatórios de 1 a 10.000.

Meu script em lote

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

Saídas Atuais

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)

Pergunta

Preciso que o número aleatório tenha apenas 4 dígitos e não 1, 2 ou 3 dígitos e sempre 4.

Responder1

Gerar script de lote do Windows com número aleatório de 4 dígitos

Você pode usar um script em lote comjanelaspara concluir esta tarefa facilmente, como explicarei abaixo.

Essencialmente, isso será. . .

  1. UsarPowerShell Obter aleatóriofunção para gerar o número aleatório
    • O valor do número aleatório estará em um intervalo de 0000-9999uso dos parâmetros -Maximume-Minimum
  2. Use o"0" Especificador personalizado—"{0:0000} -f $fRandom" comPowerShelle .LÍQUIDOpara garantir que o valor do número aleatório tenha zeros à esquerda adicionados, garantindo que sempre tenha 4 dígitos

  3. Resultado noPowerShellvalor de número aleatório sendo echo'd como saída

  4. Use umPARA /Floop para obter o resultado do executadoPowerShellroteiro (o número aleatório) dentro dele e salve esse resultado como uma variável para usar no script em lote de acordo com suas necessidades ( %RAND%)


Script em lote

Se o número aleatório não puder ter valores de 4 dígitos com zeros prefixados como 0001, 0011, ou 0111você pode alterar o-Minimum 1000assim, mas dígitos aleatórios 1-999serão omitidos, então o valor de1000é o que você deseja usar para o -Minimumparâmetro, se for o 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 adicionais

Responder2

Uma solução simples poderia ser pegar o último dígito de quatro números gerados aleatoriamente

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

Responder3

Você poderia usar meu script em lote:

@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

Em seguida, arraste a pasta C:\Windows\System32 e digite "random /?" para a sintaxe.

Responder4

Você só precisa ajustar o valor mínimo e o intervalo da sua solução inicial.

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

informação relacionada