bat中生成隨機數

2021-08-29 10:21:13 字數 1999 閱讀 5668

批處理、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 .***』) 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%!

bat中生成隨機數

批處理 bat 產生指定範圍隨機數字的 需要的朋友可以參考下下 最近研究批處理命令,偶然發現,居然還有隨機數,在此之前,是未敢想過。說到隨機數,不同的軟體都有隨機函式的功能,使用方法大體類似,但卻有著區別。本文,給您介紹一下ms dos中的批處理命令random的用法及例項。一 random的取值範...

ios 中生成隨機數

ios 有如下三種隨機數方法 1.srand unsigned time 0 不加這句每次產生的隨機數不變 int i rand 5 2.srandom time 0 int i random 5 3.int i arc4random 5 注 rand 和random 實際並不是乙個真正的偽隨機數發...

ios 中生成隨機數

ios 有如下三種隨機數方法 1.srand unsigned time 0 不加這句每次產生的隨機數不變 int i rand 5 2.srandom time 0 int i random 5 3.int i arc4random 5 注 rand 和random 實際並不是乙個真正的偽隨機數發...