中影国际影城神龙城:批处理中产生随机数

来源:百度文库 编辑:中财网 时间:2024/05/01 21:10:18

平时的小工作用用批处理也是挺不错的,随手备份点代码。
cmd里有个环境变量%random%可以产生0到32767之间的随机数,这样就可以用通用的公式%random%%%(max-min+1)+min来产生[min,max]区间里的随机数,批处理中求模得用两个%%符号,例子:

@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!
)

一定要用setlocal enabledelayedexpansion来启用延迟环境变量扩展,然后用!符号而不是%符号来访问环境变量,否则for循环里可能会产生一样的随机数,或者有其它问题


PS:我发现,这似乎不是随机数,因为随机数总是按照增大 或者 较小进行的.如果这样的话,其实用date 和time 的批处理变量来显示,不过time的冒号要命啊...要单独处理冒号.但是麻烦,还是%random%的简单.

我之所以要找这么个东西,是为了备份数据,批处理备份,但是不产生随机数的话,文件名不唯一就要覆盖数据了.所以找了这么个随机数产生器:核心 echo %random%