数字发生器1-4 |批量
问题描述:
有一个简单的方法来制作一个数字发生器。
但我只想生成的编号为1 - 4数字发生器1-4 |批量
下面的程序需要很长的时间输出
@echo off
:RUN
set /a Num=%random%
if %num% LEQ 4 echo %num%
goto :RUN
它,直到它得到不到4运行%随机%,这可能是一段时间。
答
可以掩盖在随机值的比特(And
操作= &
操作者)来检索较低的两个,得到一个数的范围为[0,3],加入1,以适应上述范围内
set /a "num=(%random% & 3) + 1"
或者,作为生成的随机值使用15个比特,它可以被转移到仅检索两个高位比特
set /a "num=(%random% >> 13) + 1"
需要在两种情况下的括号因为+
操作者具有比更高的优先级或>>
运营商。
也可以使用一个Mod
操作(%
操作者)通过4来检索从一个除法的余数,也在范围[0,3]
set /a "num=%random% %% 4 + 1"
的%
操作员得到一个号码(内部批次文件%
必须被转义,因此它变成%%
)比+
运算符具有更高的优先级,所以这里不需要括号。
查看'for /?'的输出 - 特别是关于'for/L'的部分。还是你想要一个无限循环的数字在1和4之间? – SomethingDark
'set/a NumBetween1and4 =%random%%% 4 + 1' – Aacini
可能的重复[如何在BATCH脚本中随机使用?](http://stackoverflow.com/questions/5777400/how-to-use-random -in-批处理脚本) – indiv