intHighNumber = 100
intLowNumber = 1
For i = 1 to 5
Randomize
intNumber = Int((intHighNumber - intLowNumber + 1) * Rnd + intLowNumber)
Wscript.Echo intNumber
Next
如您所見,一開始我們會將值指定給兩個不同的變數:intHighNumber (範圍中的最大數) 和 intLowNumber (範圍中的最小數)。假使我們要產生介於 37 到 956 之間的亂數呢?沒問題:只要調整 intHighNumber 和 intLowNumber 的值即可:
intHighNumber = 956
intLowNumber = 37
接著我們建立一個循環 5 次的 For Next 迴圈。在這個迴圈中,我們找到下列三行程式碼:
Randomize
intNumber = Int((intHighNumber - intLowNumber + 1) * Rnd + intLowNumber)
Wscript.Echo intNumber
第一行非常重要,完全是由 Randomize 陳述式所構成。此函式使用系統時間來提供 Rnd 函式的「初始」值。由於系統時間會一直變動,表示 Rnd 函式比較有可能產生真正的亂數。事實上,先試試執行這個沒有使用 Randomize 陳述式的指令碼:
intHighNumber = 100
intLowNumber = 1
intNumber = Int((intHighNumber - intLowNumber + 1) * Rnd + intLowNumber)
Wscript.Echo intNumber
無論執行幾次,得到的「亂」數都相同 (在我們的測試電腦上,每次都是 71)。
下一行程式碼會實際產生亂數:
intNumber = Int((intHighNumber - intLowNumber + 1) * Rnd + intLowNumber)
Rnd 函式包含用來產生亂數的演算法;我們只需要將自己的兩個變數 (intHighNumber 和 intLowNumber) 插入方程式即可。另外,我們還使用 Int 函式以確保傳回的是整數而非小數。這一小行程式碼看起來有點奇怪,但是不用擔心;只要把變數插入正確的地方就對了。
差不多就是這樣;我們回應傳回的數字,然後循環並產生下一個亂數。一切都完成時,會得到如下的數字清單:
82
15
92
32
13
對了,是不是可以用這個方法產生號碼來玩樂透呢?可以呀,但這樣比較容易猜中得獎號碼嗎?這麼說好了:Scripting Guys 還是得每天來上班。您自己判斷,要是我們寫的指令碼讓我們玩樂透贏得 1 億美金,還用得著上班嗎。 |