Сгенерировать случайное число, состоящее только из 4 цифр

Сгенерировать случайное число, состоящее только из 4 цифр

У меня есть пакетный скрипт, который генерирует случайные числа от 1 до 10000.

Мой пакетный скрипт

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

Выходы тока

2532  (4 digits)

253   (3 digits)

25    (2 digits)

2     (1 digits)

Ожидаемые результаты

2432 (4 digits)

3431 (4 digits)

9282 (4 digits)

8812 (4 digits)

Вопрос

Мне нужно, чтобы случайное число состояло только из 4 цифр, а не из 1, 2 или 3 цифр, а всегда из 4.

решение1

Пакетный скрипт Windows для генерации случайного 4-значного числа

Вы можете использовать пакетный скрипт сОкначтобы легко выполнить эту задачу, как я объясню ниже.

По сути это будет...

  1. ИспользоватьPowerShell-ы Получить-Случайнофункция для генерации случайного числа
    • Значение случайного числа будет находиться в диапазоне с 0000-9999использованием параметров -Maximumи-Minimum
  2. Использовать"0" Пользовательский спецификатор — "{0:0000} -f $fRandom" сPowerShellи .СЕТЬчтобы гарантировать, что значение случайного числа содержит начальные нули, гарантируя, что оно всегда будет состоять из 4 цифр

  3. Результат вPowerShellechoВ качестве выходных данных используется случайное числовое значение

  4. ИспользоватьДЛЯ /Фцикл для получения результата выполненногоPowerShellсценарий (случайное число) внутри него и сохраните этот результат как переменную для использования в пакетном скрипте для ваших нужд ( %RAND%)


Пакетный скрипт

Если случайное число не может состоять из 4-значных значений с префиксом в виде нулей, например 0001, 0011, , или 0111вы можете изменить-Minimum 1000как это вместо этого, но случайные цифры 1-999будут опущены, поэтому значение1000это то, что вы хотите использовать для -Minimumпараметра, если это так.

 @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

Дополнительные ресурсы

решение2

Простым решением может быть взятие последней цифры из четырех случайно сгенерированных чисел.

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

решение3

Вы можете использовать мой пакетный скрипт:

@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

Затем перетащите папку C:\Windows\System32 и введите «random /?» для синтаксиса.

решение4

Вам просто нужно скорректировать минимальное значение и диапазон вашего первоначального решения.

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

Связанный контент