`

转: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%! 
分享到:
评论

相关推荐

    大量批处理实用程序例程

    把指定文件中的指定位置的数字相加.cmd 把首行和尾行互换.cmd 拼接相临的奇偶行文本内容.cmd 提取两个文件内容的不同之处.cmd 文本内容互换.bat 显示只有指定个数字符的行.cmd 显示某两个字符及其之间的字符.cmd ...

    700个批处理打包下载.rar

    删除指定路径下指定文件及文件夹外的所有文件及文件夹2.bat 删除某些文件夹之外的目录.cmd 删除重复行.cmd 判断光驱是否可用.bat 判断光驱里有无光盘.bat 判断分区格式.bat 判断是文件还是文件夹.cmd 判断驱动器类型...

    网管教程 从入门到精通软件篇.txt

    /p 即使驱动器不在 chkdsk 的检查范围内,也执行彻底检查。该参数不对驱动器做任何更改。 /r 找到坏扇区并恢复可读取的信息。隐含着 /p 参数。  注意 Chkdsk 命令需要 Autochk.exe 文件。如果不能在启动目录...

    cmd操作命令和linux命令大全收集

    3. Nslookup-------IP地址侦测器 ,是一个 监测网络中 DNS 服务器是否能正确实现域名解析的命令行工具。它在 Windows NT/2000/XP 中均可使用,但在 Windows 98 中却没有集成这一个工具。 4. explorer-------打开...

    EXCEL集成工具箱V6.0

    能批量取某列存储格按指定长度的数字并允许特定数字串的获取,例如M76000,RC76000等。而小于指定长度的数字串则不予获取。 【快速选定数据】 可瞬间选中与用户指定内容相同的当前工作表中所有存储格,方便选定、...

    EXCEL集成工具箱V8.0完整增强版(精简)

    能批量取某列存储格按指定长度的数字并允许特定数字串的获取,例如M76000,RC76000等。而小于指定长度的数字串则不予获取。 【快速选定数据】 可瞬间选中与用户指定内容相同的当前工作表中所有存储格,方便选定、...

    蓝梦多功能记事本 v3.0.zip

    删/留 指定位置文本 连续换行符数量变更 批量生成带序号文本/批量生成帐号密码文本/生成随机文本(数字、字母、混合) 支持保存格式:txt /vbs/ini/htm/html/bat 等 蓝梦多功能记事本 v3.0版本说明 增加 生成...

    中兴捧月-数字化婚姻配对尝试

    这3个需求值取值范围都在1-98间,当然三者的和必须为100.所以任意一个人可以用以下数组来表述: G(A、B、C、A1、B1、C1)G代表男,M代表女。 举例G11(80、50、40、10、30、60),表示男11号,拥有财富80、样貌50...

    SendTo+

    ◇清空文本文件  ○文件操作  ◇复制文件路径到剪贴板  ◇复制文件名到剪贴板 ★★★  ◇复制文件完整路径到剪贴板 ★★★★  ◇随机数字批量重命名 ★★★  ◇文本标题批量重命名 ★★...

    Linux高级bash编程

    $RANDOM: 产生随机整数 9.7. 双圆括号结构 10. 循环和分支 10.1. 循环 10.2. 嵌套循环 10.3. 循环控制 10.4. 测试与分支(case和select结构) 11. 内部命令与内建 11.1. 作业控制命令 12. 外部过滤器,...

    Advanced Bash-Scripting Guide <>

    9.6. $RANDOM: 产生随机整数 9.7. 双圆括号结构 10. 循环和分支 10.1. 循环 10.2. 嵌套循环 10.3. 循环控制 10.4. 测试与分支(case 和select 结构) 11. 内部命令与内建 11.1. 作业控制命令 12. 外部过滤器,程序和...

    计算机应用技术(实用手册)

    这个项目可指定让AGP装置来使用的系统内存大小,这取用大小是PCI内存地址范围的一部份,可分配给图形内存的空间。 Init Display First: 这个项目可选择当系统开机时先行对AGP或是PCI插槽来做初始化的动作。 [AGP...

Global site tag (gtag.js) - Google Analytics