Categories: Windows

バッチファイルで乱数を扱う方法

本記事では、バッチファイルの中で乱数を扱う方法を紹介します。

乱数を生成できる環境変数RANDOM

バッチファイルには、既に乱数を生成するための変数が用意されています。それがRANDOM変数で「%RANDOM%」でアクセスすることができます。

これを使うことで「0~32767」までのどれかの整数が得られます。また、結果は実行する度に変わります。以下のサンプルで動作を確認してみましょう。

@echo off
echo %RANDOM%
echo %RANDOM%
echo %RANDOM%
pause

実行1回目

実行2回目

実行ごとに異なる値が取得できており、その値のレンジが「0~32767」に収まっていることがわかります。

所定の範囲の乱数を生成する方法

ただ、実用上は「0~32767」の範囲の乱数をそのまま使いたいというケースは少ないと思います。

特定の範囲で乱数を得たい場合には、乱数自体に(得たいレンジの上限+1)を掛けて、32767で割ってあげることで実現できます。例えば、以下のサンプルは以下の順番で乱数を出力します。NUMの値を変更することで、ある程度柔軟に乱数を実現することができます。

  • 0~4の範囲の乱数(NUM=5)
  • 0~9の範囲の乱数(NUM=10)
  • 0~99の範囲の乱数(NUM=100)
@echo off

set NUM=5
set /a RAND=%RANDOM%*%NUM%/32767
echo %RAND%

set NUM=10
set /a RAND=%RANDOM%*%NUM%/32767
echo %RAND% 

set NUM=100
set /a RAND=%RANDOM%*%NUM%/32767
echo %RAND%  

pause

Haruoka