來源:Jaric

產生 a 至 b 之間的亂數

VB 的 Rnd 函數可以產生不小於 0,但是小於 1 的亂數值 (0≦Rnd<1),如果要產生介於某兩數之間的亂數該怎麼辦呢?請參考以下的說明

副程式

Public Function Random(min As Single, max As Single, n As Long) As String
     Randomize
     Random = Format((max - min) * Rnd + min, IIf(n > 0, "0." & String(n, "0"), "0"))
End Function

參數說明

  • min:欲產生的亂數下限值。
  • max:欲產生的亂數上限值。
  • n:產生具有 n 位小數的亂數。

Random 傳回的亂數是介於 max 和 min 之間 (min≦Random≦max),因此 max 一定要大於 min;n 必須不小於 max 或 min 具有的最大小數位數,否則會傳回超出 max 或 min 的亂數值,例如 max=10,min=8.55,則 n 一定要大於或等於 2。以上所說的限制條件的程式碼,並沒有寫在 Random 函數中。另外,Random 函數傳回的是一個字串資料。

範例一:產生 a 至 b 之間的亂數 (整數)

Private Sub Command1_Click()
     Dim a As Single, b As Single, n As Long
     a = -2
     b = 5
     n = 0
     Debug.Print Random(a, b, n)
End Sub

在此擷取部分執行的結果如下:

2
5
1
5
-2
3

範例二產生 a 至 b 之間的亂數(浮點數)

Private Sub Command2_Click()
     Dim a As Single, b As Single, n As Long
     a = -3.5
     b = 3.5
     n = 2
     Debug.Print Random(a, b, n)
End Sub

在此擷取部分執行的結果如下

-1.65
1.33
-1.50
1.53
2.93
0.88
-2.17

 

This page was written by Jaric on Aug. 29, 1998 .