博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
转:Bat下产生指定范围随机数字的实现方法
阅读量:4223 次
发布时间:2019-05-26

本文共 1635 字,大约阅读时间需要 5 分钟。

最近研究批处理命令,偶然发现,居然还有随机数,在此之前,是未敢想过。 

说到随机数,不同的软件都有随机函数的功能,使用方法大体类似,但却有着区别。 

本文,给您介绍一下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%! 

转载地址:http://bcgmi.baihongyu.com/

你可能感兴趣的文章
云创大数据的2018年!
查看>>
全国高校(高职)大数据师资培训班圆满落幕,200多名老师抢先“尝鲜”!
查看>>
【回顾】云创大数据教育事业部成立
查看>>
云创大数据与江苏城市职业学院共建实习实训就业基地!
查看>>
12月,云创大数据发生了哪些大事?
查看>>
贵州电子商务职业技术学院实验中心主任李崑一行到访
查看>>
善行天下,大爱无疆 ——云创再次获赠爱心锦旗!
查看>>
热烈祝贺刘鹏教授膺选第45届世界技能大赛云计算赛事中国赛区裁判长!
查看>>
图解YU12、I420、YV12、NV12、NV21、YUV420P、YUV420SP、YUV422P、YUV444P的区别
查看>>
QNX简介
查看>>
MQTT协议基本介绍
查看>>
进程和线程是操作系统基本概念,了解一下
查看>>
SSL与TLS的区别以及介绍
查看>>
HTTPS、TLS、SSL、HTTP区别和关系
查看>>
Kafka 入门三问
查看>>
c/c++ 内存泄漏检测,开源工具valgrind使用整理
查看>>
h264 sps pps详解
查看>>
AAC的ADTS头信息介绍
查看>>
Coroutine,你究竟干了什么?
查看>>
代码宏的一点小知识
查看>>