產生 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 .