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)

質問

乱数は 1 桁、2 桁、3 桁ではなく、常に 4 桁の 4 桁のみで構成されている必要があります。

答え1

ランダムな 4 桁の数字を生成する Windows バッチ スクリプト

バッチスクリプトを使用すると、ウィンドウズ以下で説明するように、このタスクを簡単に完了できます。

本質的には、これは...

  1. 使用PowerShellの ランダム取得乱数を生成する関数
    • 乱数値は、およびパラメータを0000-9999使用して、の範囲になります。-Maximum-Minimum
  2. 使用"0" カスタム指定子 - "{0:0000} -f $fRandom"パワーシェルそして 。ネット乱数値の先頭にゼロが追加され、常に4桁になるようにする

  3. その結果、パワーシェルecho出力として乱数値が出力される

  4. 使う/F の場合実行された結果を取得するループパワーシェル脚本 (乱数)をその中に保存し、その結果を変数として保存して、必要に応じてバッチスクリプトで使用します(%RAND%


バッチスクリプト

乱数が0001、、、0011またはのように0が前に付く4桁の値にできない場合は、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

簡単な解決策としては、ランダムに生成された4つの数字の最後の桁を取ることです。

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

関連情報