数字生成器 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"
%
运算符(在批处理文件中 %
必须转义,所以它变成 %%
)比 +
运算符具有更高的优先级,所以这里有括号不需要。
有一种制作数字生成器的简单方法。
但我只希望生成的数字为 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"
%
运算符(在批处理文件中 %
必须转义,所以它变成 %%
)比 +
运算符具有更高的优先级,所以这里有括号不需要。