`

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

相关推荐

    批处理生成随机密码存于文本文件中

    4. **字符集选择**:为了确保密码包含特定类型的字符(大写字母、小写字母和数字),可能需要创建一个包含这些字符的字符串,并从中随机选取。 5. **条件判断**:确保生成的每个密码都满足条件,如果某个密码不满足...

    sleep和随机数字批处理脚本

    在给定的压缩包文件中,包含两个批处理脚本:`sleep.bat` 和 `random.bat`,分别实现了睡眠(sleep)功能和生成随机数的功能。这两个功能在自动化测试和工程应用中非常实用。 ### 睡眠(Sleep)功能 在批处理脚本...

    跨平台数字雨

    2. **坐标定位:** 使用`gotoxy()`函数来实现光标在屏幕上的定位,这对于绘制字符雨至关重要,但需要注意的是`gotoxy()`是非标准的,不同的编译环境可能会有不同的实现方法。 3. **字符颜色设置:** 通过ANSI转义...

    大量批处理实用程序例程

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

    700个批处理打包下载.rar

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

    2021-2022计算机二级等级考试试题及答案No.17145.docx

    24. 方法重写:在子类中,当一个方法与父类的方法具有相同的名称、返回类型和参数列表时,称为方法重写,目的是覆盖父类的行为(正确答案:在继承关系中,子类的方法与父类的某一方法具有相同的方法名、返回类型和...

    16位0-F随机数生成器 源代码基于c#

    这个工具的主要功能是生成指定数量的16位十六进制数字,这些数字范围从0到F,即0到15。以下将详细阐述其核心知识点: 1. **C#基础**:C#是一种现代、类型安全的编程语言,由微软开发,用于构建跨平台的应用程序。它...

    vc6.0 下的任意长度的RSA算法实现

    在VC6.0下,我们可以编写函数来随机生成指定位数的素数,例如1到100位。这个过程可能需要多次尝试,因为素数测试(如米勒-拉宾素性检验)是概率性的。 3. **欧拉函数φ(n)** 欧拉函数φ(n)表示小于等于n且与n互质...

    批处理高级教程精选 批处理高级教程精选

    - **示例**: `FOR /L %%i IN (1,1,10) DO echo %%i` 循环打印数字1到10。 **8. 条件判断** - **功能**: 根据条件执行不同的命令。 - **示例**: `IF %ERRORLEVEL% EQU 0 (ECHO 成功) ELSE (ECHO 失败)` **9. 参数...

    扫雷源代码

    - 雷区生成:随机在指定大小的网格内布置一定数量的雷,确保相邻格子的雷数计算正确。 - 点击与标记:玩家可以点击或右键标记格子,模型会根据操作更新游戏状态。 - 数字提示:每个格子根据周围雷的数量显示相应...

    绝对值得珍藏的抽奖软件

    RNG是一个算法,可以产生无法预测的数字序列,以此来决定谁是幸运儿。在抽奖软件中,RNG的公正性和随机性至关重要,通常需要通过专业测试和认证以确保其无偏性。 除此之外,抽奖软件通常具有以下功能: 1. 参与者...

    0018计算机应用基础复习资料.doc

    8. ASCII码:ASCII码是美国标准信息交换代码,ASCII码最小的是数字5,因为ASCII码按照数值顺序排列,数字先于大写字母,大写字母先于小写字母。 9. 光驱速度:四倍速光驱的读取速度是600KB/S,速度通常以倍数表示,...

    浙江高职单招单考计算机模拟卷.doc

    16. 批处理文件显示:在DOS环境下,使用TYPE命令可以显示文本文件的容,所以要显示当前目录下所有批处理文件(.BAT文件)的容,应该使用命令TYPE *.BAT(A. TYPE *.BAT)。 17. Access窗体和打印:窗体页眉只在第一...

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

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

    java方面的知识总结

    - UUID由两个部分组成,每个部分都是一串十六进制数字:时间戳和节点ID。 #### String,StringBuilder,StringBuffer三者的区别 - **String**:不可变字符串,每次修改都会创建新的String对象,因此在频繁修改的...

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

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

    EXCEL集成工具箱V6.0

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

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

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

    那些年,追寻Jmeter的足迹--第1版本-unlocked.pdf

    - **方法**: 通过使用 JMeter 的变量和函数来实现跨线程的数据共享。 - **示例**: 在一个线程组中设置变量,在另一个线程组中引用该变量。 **10.8 时间处理相关操作** - **技巧**: - **获取当前系统时间**:使用...

    2021-2022计算机二级等级考试试题及答案No.3634.docx

    - **解析**:自动批处理文件(如Windows下的`autoexec.bat`)通常需要放置在启动盘的根目录中才能在系统启动时自动运行。因此,此题的答案为`C.启动盘的根目录中`。 #### 题目8:桌面背景的排列方式 - **知识点**:...

Global site tag (gtag.js) - Google Analytics