VBS生成隨機數


  自動化工作中常常遇到因數據重復使業務無法提交的問題,我想到了利用隨機數來解決這個問題,下面對VBS生成隨機數做下解析:

一、Randomize語句

   Randomize :初始化隨機數生成器。

  語法 :Randomize [number] 

      可選的 number 參數是 Variant 或任何有效的數值表達式。 

  說明: 

    Randomize 用 number 將 Rnd 函數的隨機數生成器初始化,該隨機數生成器給 number 一個新的種子值。如果省略 number,則用系統計時器返回的值作為新的種子值。 

   如果沒有使用 Randomize,則(無參數的)Rnd 函數使用第一次調用 Rnd 函數的種子值。 

二、Rnd函數

  語法:Rnd[(number)]

      可選的 number 參數是 Single 或任何有效的數值表達式。

  函數返回值:
     如果 number 的值小於 0, 則每次都使用 number 作為隨機數種子返回相同結果。
     如果 number 的值大於 0, 則返回序列中的下一個隨機數。
     如果 number 的值等於 0, 則返回最近生成的數。
     如果省略 number 參數則返回序列中的下一個隨機數。(即默認number大於0)

 說明:

    Rnd 函數返回小於 1 但大於或等於 0 的值。

   number 的值決定了 Rnd 生成隨機數的方式。

   對最初給定的種子都會生成相同的數列,因為每一次調用 Rnd 函數都用數列中的前一個數作為下一個數的種子。

   在調用 Rnd 之前,先使用無參數的 Randomize 語句初始化隨機數生成器,該生成器具有根據系統計時器得到的種子。

為了生成某個范圍內的隨機整數,可使用以下公式:

   Int((upperbound - lowerbound + 1) * Rnd + lowerbound)

這里,upperbound 是隨機數范圍的上限,而 lowerbound 則是隨機數范圍的下限。

  j舉例如下:

Funtion GetRandomMath(m,n)
Randomize
GetRandomMath = Int(((n-m+1) * Rnd) + m)
End Function
msgbox GetRandomMath(20,30)

注意:若想得到重復的隨機數序列,在使用具有數值參數的 Randomize 之前直接調用具有負參數值的 Rnd。使用具有同樣 number 值的 Randomize 是不會得到重復的隨機數序列的。

三、獲取隨機整數

  Num=RandomNumber.value(startnum,endnum)  或者Num=RandomNumber.value(parameter)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM