批随机数生成器 - 生成与之前相同的数字

时间:2013-09-25 04:41:19

标签: if-statement random batch-file

基本上,正在发生的事情是我的代码继续生成相同的数字。我已经将回声关闭以查看问题并且实际的%random%变量正在发生变化,但它似乎在进行数学计算并说“不,它确实是这个数字。”这是代码:

set /a num=(24 * %random%) / 32768 + 1

我已经自己测试了这个代码并且工作正常。但是,当我将if语句*添加到代码中时,它就变得非常糟糕。所以,问题是,我该如何解决这个问题以及它为什么会发生?

*我的if语句:

if "%num%"=="24" (
  echo X
  set /p ans=
  if "%ans%"=="litin" (
    echo.
    echo Correct!
    pause>nul
    goto generate
  )
)

我的所有if语句都是这样的。

2 个答案:

答案 0 :(得分:1)

听起来你可能有变量扩展的问题。假设你在循环中做这些事情。

尝试在程序顶部添加setlocal,如下所示:

setlocal ENABLEDELAYEDEXPANSION

在您的计划结束时endlocal

endlocal

现在,当您需要使用在循环内更改的变量时,请使用!语法而不是%

if "!num!"=="24" (
  echo X
  set /p ans=
  if "!ans!"=="litin" (
    echo.
    echo Correct!
    pause>nul
    goto generate
  )
)

答案 1 :(得分:0)

您可能希望使用EQU来比较数字。所以试试这个

if "%num%" EQU 24 ( 
    ...
)