数字生成器 1-4 |批

Number Generator 1-4 | Batch

有一种制作数字生成器的简单方法。
但我只希望生成的数字为 1 - 4

以下程序获得输出的时间太长

@echo off
:RUN
set /a Num=%random%
if %num% LEQ 4 echo %num%
goto :RUN

它运行 %random% 直到小于 4,这可能需要相当长的时间。

可以屏蔽随机值中的位(And运算=&运算符)取低两位,得到[0,3]范围内的数加1适应指定范围

set /a "num=(%random% & 3) + 1"

或者,由于生成的随机值使用了 15 位,因此可以将其移位以仅检索高两位

set /a "num=(%random% >> 13) + 1"

这两种情况都需要括号,因为 + 运算符的优先级高于 &>> 运算符。

您还可以使用 Mod 运算(% 运算符)来检索除以 4 的余数,同时得到 [0,3][=24= 范围内的数字]

set /a "num=%random% %% 4 + 1"

% 运算符(在批处理文件中 % 必须转义,所以它变成 %%)比 + 运算符具有更高的优先级,所以这里有括号不需要。