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

时间:2014-02-27 20:45:00

标签: math batch-file cmd

您好我是Batch编程的新手,我想知道如何检查随机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

由于

3 个答案:

答案 0 :(得分:7)

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

对于问题的“更好”部分

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

答案 1 :(得分:5)

你的逻辑错了。 %num%== 0-8191将从0减去8191,得到-8191并将其与num进行比较。没有任何一个被触发,你将会落到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之间,则第一次检查失败,第二次检查失败,跳过余数。

有关比较运算符的信息,请参阅this question

答案 2 :(得分:0)

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

if%num%GEQ 0 if%num%LEQ 8191 goto o1