請問VB中Randomize()的作用是什麼?

2007-07-21 7:36 pm
Sub Main()
Dim x(24) As Integer
Dim i As Integer
Randomize()
For i = 0 To 24
x(i) = Int(Rnd() * 25)
Next
For i = 0 To 24
Console.Write(x(i) & " ")
Next
Console.ReadLine()
End Sub
我本身以為它可把Rnd()內的隨機數整理好, 令到隨機數不會出現相同, 但我試過多次測試, 發覺一樣會有相同隨機數的出現...

回答 (2)

2007-07-21 8:58 pm
✔ 最佳答案
你好.
我在學習的時候都碰到這個問題.基本上沒有一個程式言語是懂得在迴圈之內不重複隨機的亂數的.像.
for XXXXX
random XXX
next XXX
試想想你要寫一個六合彩的程序.第二個數是不能跟第一個數相同的.第三個數亦不能跟第一,二個數相同.
所以要自己再寫一段程式控制.方法是.檢查第二個數跟一個是否一樣.要是一樣的話再random吧.
想想看 : )
希望可以幫到你.
謝謝
2007-07-21 9:26 pm
其實VB中的隨機數不是如人類的隨口說一個數出來的,而是用數學公式去推出一系列的沒有意思的數字吧了。

這類公式是要有一個Seed(種子)的,如果seed相同,出來的隨機數列到都是相同的。

Rnd()的功能就是在這串隨機數列(Random number series)內提取數字吧了。
Randomize()的功能是用不同的seed去重新計算隨機數列(Random number series)。也因此你可以在()內加入數字為它的seed。你不加的話,它會用當下的時間作為seed。

所以如果你不執行Randomize()便行Rnd()便只會從同一個隨機數列(Random number series)內提取數字,所以隨機數使如你的結果一樣是相同的了。


收錄日期: 2021-04-15 21:57:38
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20070721000051KK01290

檢視 Wayback Machine 備份