Rnd函數產生的是0和1之間的隨機數,範圍是[0,1),包括0,但不包括1。
因此要產生1~100之間的隨機數,可以使用Rnd*98,產生的是[0,98)的隨機數,而int(Rnd*98)產生的是[0,97]之間的隨機整數,那麽int(Rnd*98)+2產生的就是[2,99]之間的隨機整數了,符合目標1到100之間的隨機數目的。
函數代碼如下:
Public?Function?sj()?As?Integer
Randomize
sj?=?Int(Rnd?*?98)?+?2
End?Function
擴展資料:
語法:
Rnd[(number)]
如果 number 的值是 Randomize 生成
小於 0 ,每次都使用 number 作為隨機數種子得到的相同結果。
大於 0 ,以上壹個隨機數為種子產生下壹個隨機數。
等於 0 ,產生與最近生成的隨機數相同的隨機數。
省略, 以上壹個隨機數為種子產生下壹個隨機數。
說明:
Rnd 函數返回小於 1 但大於或等於 0 的值。
number 的值決定了 Rnd 生成隨機數的方式。
對最初給定的種子都會生成相同的數列,因為每壹次調用 Rnd 函數都用數列中的前壹個數作為下壹個數的種子。
在調用 Rnd 之前,先使用無參數的?Randomize語句初始化隨機數生成器(若帶參數,則產生由參數對應的壹個特定序列的隨機數),該生成器具有根據系統計時器得到的種子。
為了生成某個範圍內的隨機整數,可使用以下公式:
Int((upperbound - lowerbound + 1) * Rnd + lowerbound)
這裏,upperbound 是隨機數範圍的上限,而 lowerbound 則是隨機數範圍的下限。
註意 若想得到重復的隨機數序列,在使用具有數值參數的 Randomize 之前直接調用具有負參數值的 Rnd。使用具有同樣 number 值的 Randomize 是不會得到重復的隨機數序列的。
參考資料: