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

(0)

相关推荐

  • 利用批处理BAT生成随机数实现随机网站内容

    %RANDOM% 返回 0 到 32767 之间的任意十进制数字.比如说想生成0-100的随机数就是对101取余数就可以了.格式是:set num=%RANDOM%%%100 下面是我的实例代码: 复制代码 代码如下: @echo off set s=10000 set g=10 cls set count=0 :loop set /a num=%random%%%%s%+1 if not defined num%num% ( set num%num%=%num% set /a count1 c

  • bat下产生指定范围随机数字的实现方法

    最近研究批处理命令,偶然发现,居然还有随机数,在此之前,是未敢想过. 说到随机数,不同的软件都有随机函数的功能,使用方法大体类似,但却有着区别. 本文,给您介绍一下MS-DOS中的批处理命令random的用法及实例. 一.random的取值范围 要使用random,必须将其当作一个变量来使用,这样才能得到值. 打开MS-DOS窗口,输入如下代码,即可获得值. 复制代码 代码如下: echo %random% %random%可以产生0到65535之间的随机数. 二.通过获得一定范围内的随机数 通

  • php 从指定数字中获取随机组合的简单方法(推荐)

    例如:给定数字100,需要随机获取3个组成这个数字的组合,例如70,20,10 代码如下: <?php /** * 获取指定数字的随机数字组合 * @param Int $var 数字 * @param Int $num 组合这个数字的数量 * @return Array */ function getNumGroups($var, $num){ // 数量不正确 if($var<$num){ return array(); } $total = 0; $result = array(); f

  • MySQL 生成随机数字、字符串、日期、验证码及 UUID的方法

    上一篇介绍了如何在 Oracle 生成随机数字.字符串.日期.验证码以及 UUID,今天我们继续讨论在 MySQL 中生成各种随机数据的方法.

  • Oracle生成随机数字、字符串、日期、验证码及 UUID的方法

    在日常生活中,随机数对于我们而言并不陌生,例如手机短信验证码就是一个随机的数字字符串:对于统计分析.机器学习等领域而言,通常也需要生成大量的随机数据用于测试.数据抽样.算法验证等.那么今天我们就来谈谈如何在 Oracle 数据库中生成随机数据.

  • 使用js Math.random()函数生成n到m间的随机数字

    摘要: 本文讲解如何使用js生成n到m间的随机数字,主要目的是为后期的js生成验证码做准备. Math.random()函数返回0和1之间的伪随机数,可能为0,但总是小于1,[0,1) 生成n-m,包含n但不包含m的整数: 第一步算出 m-n的值,假设等于w 第二步Math.random()*w 第三步Math.random()*w+n 第四步parseInt(Math.random()*w+n, 10) 生成n-m,不包含n但包含m的整数:​ 第一步算出 m-n的值,假设等于w 第二步Math

  • php获取指定数量随机字符串的方法

    本文实例讲述了php获取指定数量随机字符串的方法.分享给大家供大家参考,具体如下: function getARandLetter($number = 1) { if ($number == 0) return FALSE; //去除0 $number = $number < 0 ? - $number : $number; //如果小于零取正值 $letterArr = array ('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K',

  • Python生成随机数字和字符详情

    目录 random库 生成一个指定长度的随机字符串 Faker库 random库 random是python自带库,使用前导入 import random 即可,无需安装. 举例: import random print(random.random()) # 0.8564557389763434 print(random.uniform(0, 100)) # 78.19630268831175 print(random.randint(0, 100)) # 45 print(random.cho

  • PHP动态生成指定大小随机图片的方法

    本文实例讲述了PHP动态生成指定大小随机图片的方法.分享给大家供大家参考,具体如下: <?php $image_width = 100; $image_height = 100; $image_str = ''; if (isset($_GET['w'])) { $image_width = intval($_GET['w']); } if (isset($_GET['h'])) { $image_height = intval($_GET['h']); } if (isset($_GET['s

  • linux下保留文件系统下剩余指定数目文件的shell脚本

    本节内容:保留文件系统下剩余指定数目的文件 例子: 复制代码 代码如下: #!/bin/bash #------------------------------- #Description: Back up your files#site: www.jb51.net#------------------------------- #shell 变量path_source=/mnt/fifth/shell path_backup=/mnt/fifth/backup/shellbackup path

  • C++删除指定文件夹下N天及之前日志文件的方法

    本文实例讲述了C++删除指定文件夹下N天及之前日志文件的方法.分享给大家供大家参考.具体如下: // 功能:删除nDays天及之前的日志文件 // @nDays: 0-不删除日志,3-删除3天及之前的日志(保留今天.昨天.前天的日志) ... void CRecordLog::ClearLog(UINT nDays) // 删除N天前的日志 { if (nDays > 0) { WIN32_FIND_DATA FindFileData; CString sAllFile = m_sLogFold

随机推荐