Randomize()的作用是初始化隨機數(shù)種子,
創(chuàng)新互聯(lián)建站專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務,包含不限于成都做網(wǎng)站、網(wǎng)站制作、潘集網(wǎng)絡推廣、小程序定制開發(fā)、潘集網(wǎng)絡營銷、潘集企業(yè)策劃、潘集品牌公關、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)建站為所有大學生創(chuàng)業(yè)者提供潘集建站搭建服務,24小時服務熱線:18980820575,官方網(wǎng)址:www.cdcxhl.com
它有個帶參數(shù)的版本
Randomize(double seed)
seed是產(chǎn)生隨機數(shù)序列的一個標號,如果你不調(diào)用Randomize改變這個標號,默認使用的是同一個序列,所以每次你啟動程序生成的隨機數(shù)都是相同的,不帶參數(shù)的Randomize等價于Randomize(Timer),也就是使用系統(tǒng)時鐘作為隨機數(shù)種子
因為這個值隨程序啟動或調(diào)用每次都不會相同,所以能實現(xiàn)產(chǎn)生不同的隨機數(shù)
Rnd[(number)]
number
的值決定了
Rnd
生成隨機數(shù)的方式
如果
number
的值
Rnd
生成
小于
每次都使用
number
作為隨機數(shù)種子得到的相同結果。
大于
序列中的下一個隨機數(shù)。
等于
最近生成的數(shù)。
省略
序列中的下一個隨機數(shù)。
====================
先討論沒有加randomize時
X小于0
如
rnd(-1)
以-1為種的隨機數(shù)永遠相同
X大于0
如
rnd(1)
系統(tǒng)會先生成隨機數(shù)列表
有N個隨機數(shù)
你每執(zhí)行一次rnd(1)就獲取列表中下一個隨機數(shù)
比如有這么個列表
程序開始時
得到0.7055475
執(zhí)行第二次rnd(1)得到0.533424
第三次0.5795186
你關閉程序重新打開
第一次得到還是0.7055475
.7055475
.533424
.5795186
.2895625
.301948
而你說的X0
X0沒差別
是錯的
Rnd(1)
Debug.Print
Rnd(-2)
和
Debug.Print
Rnd(-2)
Rnd(1)
結果是不一樣的
X等于0
最近生成的數(shù)
一般為科學型數(shù)值
這個值也是不變的
rnd(x)
省略x不寫
就和X0
效果一樣
=========================
Randomize
用
number
將
Rnd
函數(shù)的隨機數(shù)生成器初始化,該隨機數(shù)生成器給
number
一個新的種子值。如果省略
number,則用系統(tǒng)計時器返回的值作為新的種子值。
如果沒有使用
Randomize,則(無參數(shù)的)Rnd
函數(shù)使用第一次調(diào)用
Rnd
函數(shù)的種子值。
注意
若想得到重復的隨機數(shù)序列,在使用具有數(shù)值參數(shù)的
Randomize
之前直接調(diào)用具有負參數(shù)值的
Rnd。使用具有同樣
number
值的
Randomize
是不會得到重復的隨機數(shù)序列的。
一般在使用rnd獲取隨機數(shù)
都是
randomize
int(rnd*(上限-下限+1)+下限)
這2個函數(shù)的X都是省略不寫
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Randomize() '產(chǎn)生隨機數(shù)種子 以防止每次生成結果都一樣
Dim a(100) As Integer '聲明數(shù)組存放數(shù)據(jù) 用來保存隨機數(shù)結果
Dim max As Integer, min As Integer '聲明兩個變量存最大值和最小值
min = 1000 : max = 0 '設置初值
For i = 0 To 99 '循環(huán)100次
a(i) = Int(Rnd() * 1000 + 1) '用rnd生成一個隨機數(shù) 由于rnd范圍為0-1之間的小數(shù).所以*1000設置他的范圍為0到999之間 加1變成1到1000之間
If a(i) = max Then max = a(i) '如果當前數(shù)值大于最大值的變量就保存
If a(i) = min Then min = a(i) '如果當前數(shù)值小于最小值的變量就保存
Next
MsgBox("最大值為" max)
MsgBox("最小值為" min)
End Sub
VB的隨機數(shù)即使用Rnd函數(shù)生成的隨機數(shù)值。種子,為初始值,用來生成偽隨機數(shù)字。
Rnd 函數(shù),返回一個包含隨機數(shù)值的 Single。
對最初給定的種子都會生成相同的數(shù)列,因為每一次調(diào)用 Rnd 函數(shù)都用數(shù)列中的前一個數(shù)作為下一個數(shù)的種子。
在調(diào)用 Rnd 之前,先使用無參數(shù)的 Randomize 語句初始化隨機數(shù)生成器,該生成器具有根據(jù)系統(tǒng)計時器得到的種子。
種子,為初始值,用來生成偽隨機數(shù)字。例如, Randomize 語句創(chuàng)建一種子值供 Rnd 函數(shù)使用,以接著創(chuàng)建唯一偽隨機數(shù)列。
Randomize 語句,初始化隨機數(shù)生成器。
說明
Randomize 用 number 將 Rnd 函數(shù)的隨機數(shù)生成器初始化,該隨機數(shù)生成器給 number 一個新的種子值。如果省略 number,則用系統(tǒng)計時器返回的值作為新的種子值。
如果沒有使用 Randomize,則(無參數(shù)的)Rnd 函數(shù)使用第一次調(diào)用 Rnd 函數(shù)的種子值。
Randomize 語句示例
本示例用 Randomize 語句初始化隨機數(shù)生成器。由于忽略了數(shù)值參數(shù), 所以
Randomize 用 Timer 函數(shù)的返回值作為新的隨機數(shù)種子值。
Dim MyValue
Randomize ? ' 對隨機數(shù)生成器做初始化的動作。
MyValue = Int((6 * Rnd) + 1) ? ' 生成 1 到 6 之間的隨機數(shù)值。