-1

У меня есть пакетный скрипт, который генерирует случайные числа от 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.

4 ответа4

1

Создать случайный 4-значный номер Windows Batch Script

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

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

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

  3. В результате значение случайного числа PowerShell будет echo как вывод

  4. Используйте цикл FOR /F, чтобы взять результат выполненного сценария 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

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

0

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

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

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

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

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

@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 /?«для синтаксиса.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .