古詩詞大全網 - 古詩大全 - VB中randomize是用來產生什麽樣的隨機數啊?

VB中randomize是用來產生什麽樣的隨機數啊?

這是壹個較復雜的數學問題:我記得看到過相關介紹,具體不記得是哪裏了。

妳可以搜壹搜關鍵字為“產生隨機數的算法”的相關內容。大致原理如下:

在計算機程序設計語言中,都有定義了產生隨機數的函數,程序員只要調用該函數,就可以產生隨機數。數學中,函數需要有壹個(或多個)自變量,那麽產生隨機數的函數,也需要壹個自變量。

下面解釋vb的rnd函數與randomize函數的作用與關系:

rnd函數需要壹個自變量(也叫做產生隨機數的種子),來產生壹個隨機數。但是,我們在使用rnd函數的時候,並沒有給過它什麽種子數?這就與randomize函數有關了:

1,當使用rnd函數之前,如果沒有使用randomize函數,那麽,系統就以某壹個固定的數值作為rnd函數的種子,從而產生第1個隨機數,接下來第2次呢,就以第1次產生的隨機數作為種子,來產生第2個隨機數,第3次呢,就以第2次產生的隨機數作為種子,來產生第3個隨機數,....。壹直按這個樣方法產生壹系列隨機數,所以,在不使用randomize函數的情況下,每次使用rnd函數產生的隨機數序列是相同的。

2,當使用rnd函數之前,如果使用了randomize函數,那麽randomize函數會產生壹個隨機數,然後,當第1次使用rnd函數產生隨機數的時候,系統會把由randomize函數產生的隨機數給rnd函數作為第1次的種子。

3,randomize函數的使用格式:

randomize

[參數]

其中參數,是壹個數字,用來作為randomize函數產生隨機數的種子。如果,每次用相同的參數,作為randomize的種子,那麽,結果還是壹樣,得到的序列是相同的。

例如:

randomize

1

for

i

=

1

to

100

print

rnd

next

i

但是,randomize函數的格式中,參數是可選的,當不帶參數的時候,系統會將計算機的時鐘(具體不知道使用時鐘的什麽數據)作為randomize函數的種子,這樣以來,有於計算機時鐘是在變化的,特別是它的變化周期比較長,這樣,就可以產生不同序列的隨機數了。

例如:

randomize

for

i

=

1

to

100

print

rnd

next

i

大概的原理就是這樣,有不當之處請指正。

記得以前學c語言還是數據結構的書上,專門介紹如何編寫產生隨機數的函數。