bat下产生指定范围随机数字的实现方法
程序员文章站
2022-08-26 08:51:41
最近研究批处理命令,偶然发现,居然还有随机数,在此之前,是未敢想过。 说到随机数,不同的软件都有随机函数的功能,使用方法大体类似,但却有着区别。 本文,给您介绍一下ms-d...
最近研究批处理命令,偶然发现,居然还有随机数,在此之前,是未敢想过。
说到随机数,不同的软件都有随机函数的功能,使用方法大体类似,但却有着区别。
本文,给您介绍一下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%!
上一篇: 关闭IDE通道检测的批处理
下一篇: 去掉字符串头所有的0的批处理