bat批处理产生指定范围随机数字的方法介绍

发布时间:2020-11-28编辑:脚本学堂
本篇文章介绍了,使用批处理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,生成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

例2,随机获取文件名
 

复制代码 代码示例:
@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

例3,在一个文本中随机取一行数据
 

复制代码 代码示例:
@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%!