最近研究批處理命令,偶然發(fā)現(xiàn),居然還有隨機數(shù),在此之前,是未敢想過。
說到隨機數(shù),不同的軟件都有隨機函數(shù)的功能,使用方法大體類似,但卻有著區(qū)別。
本文,給您介紹一下MS-DOS中的批處理命令random的用法及實例。
一、random的取值范圍
要使用random,必須將其當(dāng)作一個變量來使用,這樣才能得到值。
打開MS-DOS窗口,輸入如下代碼,即可獲得值。
復(fù)制代碼 代碼如下:
echo %random%
%random%可以產(chǎn)生0到65535之間的隨機數(shù)。
二、通過獲得一定范圍內(nèi)的隨機數(shù)
通過一,我們知道,%random%可以產(chǎn)生0到32767之間的隨機數(shù),但是,如何才能得到一定范圍內(nèi)的隨機數(shù)呢?
通用的算法公式如下:
通用的公式%random%%%(max-min+1)+min來產(chǎn)生[min,max]區(qū)間里的隨機數(shù),注:批處理中求模得用兩個%%符號。
比如,我們想獲得4到12之間的隨機數(shù),就可以這樣來使用,代碼如下:
復(fù)制代碼 代碼如下:
@REM 產(chǎn)生10個[4,12]間的隨機數(shù)
@echo off
REM 啟用延遲環(huán)境變量擴展
setlocal enabledelayedexpansion
REM 設(shè)置隨機數(shù)的最小和最大值以及求模用的變量
set min=4
set max=12
set /a mod=!max!-!min!+1
for /l %%i in (1,1,10) do (
REM 產(chǎn)生[min,max]之間的隨機數(shù)
set /a r=!random!%%!mod!+!min!
echo.
echo 隨機數(shù)%%i:!r!
)
三、其它實例
實例①:常用功能
生成1到100之間的隨機數(shù)
復(fù)制代碼 代碼如下:
set /a RandomNumber=%random%%%100+1
::100是范圍數(shù),1是底數(shù)即開始的數(shù).(在bat 中使用),在CMD中會出錯.
::取隨機兩位數(shù)
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
實例②:隨機獲取文件名
復(fù)制代碼 代碼如下:
@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
實例③:在一個文本中隨機取一行數(shù)據(jù)
復(fù)制代碼 代碼如下:
@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%!
您可能感興趣的文章:- 利用批處理BAT生成隨機數(shù)實現(xiàn)隨機網(wǎng)站內(nèi)容