bat下产生指定范围随机数字的实现方法
作者 佚名
来源 批处理
浏览
发布时间 2013-07-09
最近研究批处理命令,偶然发现,居然还有随机数,在此之前,是未敢想过。 复制代码 代码如下: echo %random% %random%可以产生0到65535之间的随机数。 二、通过获得一定范围内的随机数 通过一,我们知道,%random%可以产生0到32767之间的随机数,但是,如何才能得到一定范围内的随机数呢? 通用的算法公式如下: 通用的公式%random%%%(max-min+1)+min来产生[min,max]区间里的随机数,注:批处理中求模得用两个%%符号。 比如,我们想获得4到12之间的随机数,就可以这样来使用,代码如下: 复制代码 代码如下: @REM 产生10个[4,12]间的随机数 @echo off REM 启用延迟环境变量扩展 setlocal enabledelayedexpansion REM 设置随机数的最小和最大值以及求模用的变量 set min=4 set max=12 set /a mod=!max!-!min!+1 for /l %%i in (1,1,10) do ( REM 产生[min,max]之间的随机数 set /a r=!random!%%!mod!+!min! echo. echo 随机数%%i:!r! ) 三、其它实例 实例①:常用功能 生成1到100之间的随机数 复制代码 代码如下: set /a RandomNumber=%random%%%100+1 ::100是范围数,1是底数即开始的数.(在bat 中使用),在CMD中会出错. ::取随机两位数 set /a d=%random:~0,2% echo %d% ::避免00 set /a e=1%random:~0,2%-100 echo %e% @echo off :loop set /a RandomNumber=1%random:~-1%%random:~-1%-99 ::最大值100 if %RandomNumber% LSS 35 goto loop ::小于35返回 if %RandomNumber% GTR 75 goto loop ::大于75返回 echo %RandomNumber% if "%RandomNumber%" == "50" pause goto loop 实例②:随机获取文件名 复制代码 代码如下: @echo off if "%1" NEQ "$" ( for /f "tokens=1,2 delims=:" %%a in (''"%~0" $^|sort'') do @echo %%b ) else for /f "delims=" %%i in (''dir /b /a-d *.mp3'') do @call :sub %%i goto :EOF:sub echo %random%:%* goto :EOF 实例③:在一个文本中随机取一行数据 复制代码 代码如下: @ECHO %DBG% OFF SETLOCAL ENABLEDELAYEDEXPANSION FOR /F "TOKENS=*" %%i IN (TEST.TXT) DO (SET /A h+=1 & SET r!h!=%%i) SET /A s=%RANDOM%%%%h%+1 ECHO !r%s%! |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于bat下产生指定范围随机数字的实现方法的所有评论