[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[数值计算] [已解决]求解释批处理 互不相同随机数生成

本帖最后由 BHsolve 于 2014-1-1 15:25 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. set "num=5"
  3. :begin
  4. set /a num-=1
  5. for /l %%i in (0,1,%num%) do (
  6. set /a a=!random!%%20
  7. if defined _!a! set /a num+=1&goto begin
  8. set /p=!a! <nul&set "_!a!=!a!"&goto begin
  9. )
  10. pause>nul
复制代码
代码如上,希望能一步一步讲解。先谢谢了

回复 2# DAIC


    嗯,好的。
问题:第一次给_!a!赋值后,_!a!有定义了。那不就一直是begin到if间的死循环了?如何实现输出五个不同的随机数的

TOP

回复 4# DAIC

a变量被赋予新值这没问题,_!a!变量发生改变是 _!a! --> !a! -->!random!%%20  没有错吧
_!a!仍然有定义,但是值被改变了。
没有死循环也就是说,这样说defined这里判断的并不是有没有定义而是变量_!a!二次扩展后值一不一致?defined刷新环境变量,是在判定的变量更新时?

TOP

回复 6# DAIC

昨天好像理解的不是很到位
    今天看了""扩起来好像是说不转义 ! %
假设:!a!被赋值为5  _!a!=!a!  其实就是_5=5
下次的循环中如果!a!变为6
变量_5没有变化还是有定义   而_!a!因为变量延迟变成_6自然就没有定义

这样理解才对吧

TOP

回复 8# PowerShell


    我想说这段代码我完全没看懂

TOP

回复 10# apang


    你要是早来该多好啊。

TOP

返回列表