华域联盟 DOS/BAT bat下产生指定范围随机数字的实现方法

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

您可能感兴趣的文章:

本文由 华域联盟 原创撰写:华域联盟 » bat下产生指定范围随机数字的实现方法

转载请保留出处和原文链接:https://www.cnhackhy.com/17447.htm

本文来自网络,不代表华域联盟立场,转载请注明出处。

作者: sterben

发表回复

联系我们

联系我们

2551209778

在线咨询: QQ交谈

邮箱: [email protected]

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部