灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:1746回复:0

bat下产生指定范围随机数字的实现方法

楼主#
更多 发布于:2013-05-28 10:07
批处理、Bat 产生指定范围随机数字的代码,需要的朋友可以参考下下

 
最近研究批处理命令,偶然发现,居然还有随机数,在此之前,是未敢想过。
说到随机数,不同的软件都有随机函数的功能,使用方法大体类似,但却有着区别。
本文,给您介绍一下MS-DOS中的批处理命令random的用法及实例。

一、random的取值范围

 要使用random,必须将其当作一个变量来使用,这样才能得到值。
 打开MS-DOS窗口,输入如下代码,即可获得值。
复制代码 代码如下:

 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%!

喜欢0 评分0
游客

返回顶部