本帖最后由 1152 于 2021-5-21 12:29 编辑
给您介绍一下MS-DOS中的批处理命令random的用法及实例。
一、random的取值范围
要使用random,必须将其当作一个变量来使用,这样才能得到值。
打开MS-DOS窗口,输入如下代码,即可获得值。
代码如下:复制代码 %random%可以产生0到32767之间的随机数。
二、通过获得一定范围内的随机数
通过一,我们知道,%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%!
复制代码
|