%RANDOM% の初期値

最近TVの話が続いたので、久々に CMD ねたでも書いてみる。最近あまりねたを思いつかない。だれかお題を。

%RANDOM% で乱数が得られるわけだが、これのシード値はどうなっているのか。
試してみると、なんと 時分秒 を元に作っているようである。しかも、時刻が近いと初期値も近い。

@echo off
for /L %%I in (1 1 20) do cmd /c echo %%TIME%% %%RANDOM%%

ちょっとしょぼい。せめて100分の1秒まで見て欲しいところだ。
それにしても時刻が近いと初期値も近いというのは使い方によっては致命的かも。その場合はスクリプトの頭で、

for /L %%I in (1 1 %TIME:~-2%) do call rem %%RANDOM%%

などとするのがいいだろう。