如何检查随机数是否在CMD中的两个数字之间



嗨,我是批处理编程的新手,我想知道您如何检查随机 nubmer 是否在两个数字之间!

@echo off
set /a num = %random%
if %num% == 0-8191 goto o1
if %num% == 8191-16382 goto o2
if %num% == 16382-24573 goto o3
if %num% == 24573-32764 goto o4
:o1
msg * 1
goto end
:o2
msg * 2
goto end
:o3
msg * 3
goto end
:o4
msg * 4
goto end

:end
pause

我不知道我做错了什么,如果您有更好的版本,请随时展示它:D

谢谢

The Dark Canuck 中的代码回答了问题的比较部分

对于问题的"更好"部分

set /a "num=%random% %% 4 + 1"
goto o%num%
你的逻辑在这里是错误的。 %num% == 0-8191

将从 0 中减去 8191,得到 -8191 并将其与 num 进行比较。由于没有触发任何gotos,您将跌至o1。

你最好做这样的事情:

if %num% LEQ 8191 goto o1
if %num% LEQ 16382 goto o2
if %num% LEQ 24573 goto o3
if %num% LEQ 32764 goto o4

这将检查 num 是否小于或等于给定的数字,并转到相应的标签。由于值按递增顺序排列,因此无需检查下限 - 如果 %num% 介于 16382 和 8191 之间,它将在第一次检查中失败,下降到第二次检查,并跳过其余部分。

有关比较运算符的信息,请参阅此问题。

这回答了您的问题,并且当您或其他人重新访问代码时,可能更可取,以便将来更容易理解代码:

如果 %num% GEQ 0 如果 %num% LEQ 8191 转到 o1

最新更新