零、转载链接
bat脚本的基本命令语法 - 整合侠 - 博客园
一、cmd命令的随机数取值范围
%RANDOM% 系统变量只能返回 0 到 32767 之间的任意十进制数字。2的15次方等于32768,上面的0~32767实际就是15位二进制数的范围。
因此,利用cmd命令,生成的最大随机数就是32767,最小随机数就是-32767。
但我们一般不会在学习阶段去测试生成负的随机数,因为学会如何生成正随机数了,负随机数在正随机数的基础上加一个负号就能解决啦。
二、生成0-100以内的随机数
那么,如何获取100以内的随机数呢?
很简单,将%RANDOM%按100进行求余运算即可,见例子。
例:生成5个100以内的随机数
@echo off
setlocal enabledelayedexpansion
for /L %%i in (1 1 5) do (
set /a randomNum=!random!%%100
echo 随机数:!randomNum!
)
pause
三、生成n-m之内的随机数
求余数运算set /a randomNum=!random!%%100中的100可以是1~32768之间的任意整数。
总结:利用系统变量%random%,求余数运算%%,字符串处理等,可以实现很多随机处理。
通过上面的学习,我们知道,%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!)