'項(xiàng)目:VB中產(chǎn)生在一定正整數(shù)范圍內(nèi)的不重復(fù)的隨機(jī)數(shù)'作者:qq15495835Private Sub Command1_Click() Max = 100 '隨機(jī)數(shù)上限值 Min = 1 '隨機(jī)數(shù)下限值 Amount = 10 '產(chǎn)生號(hào)碼數(shù)量(數(shù)量值應(yīng)小于隨機(jī)數(shù)上限值-隨機(jī)數(shù)下限值)否則會(huì)產(chǎn)生死循環(huán) ReDim a(Amount) Randomize For i = 0 To Amount a(i) = Int((Max - Min + 1) * Rnd + Min) For j = 0 To i If i j And a(i) = a(j) Then i = i - 1 Next Next Text1 = Join(a, vbCrLf)End Sub'請(qǐng)采納參考!謝謝!
創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供遂川網(wǎng)站建設(shè)、遂川做網(wǎng)站、遂川網(wǎng)站設(shè)計(jì)、遂川網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、遂川企業(yè)網(wǎng)站模板建站服務(wù),10多年遂川做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
Rnd[(number)]
number
的值決定了
Rnd
生成隨機(jī)數(shù)的方式
如果
number
的值
Rnd
生成
小于
每次都使用
number
作為隨機(jī)數(shù)種子得到的相同結(jié)果。
大于
序列中的下一個(gè)隨機(jī)數(shù)。
等于
最近生成的數(shù)。
省略
序列中的下一個(gè)隨機(jī)數(shù)。
====================
先討論沒(méi)有加randomize時(shí)
X小于0
如
rnd(-1)
以-1為種的隨機(jī)數(shù)永遠(yuǎn)相同
X大于0
如
rnd(1)
系統(tǒng)會(huì)先生成隨機(jī)數(shù)列表
有N個(gè)隨機(jī)數(shù)
你每執(zhí)行一次rnd(1)就獲取列表中下一個(gè)隨機(jī)數(shù)
比如有這么個(gè)列表
程序開始時(shí)
得到0.7055475
執(zhí)行第二次rnd(1)得到0.533424
第三次0.5795186
你關(guān)閉程序重新打開
第一次得到還是0.7055475
.7055475
.533424
.5795186
.2895625
.301948
而你說(shuō)的X0
X0沒(méi)差別
是錯(cuò)的
Rnd(1)
Debug.Print
Rnd(-2)
和
Debug.Print
Rnd(-2)
Rnd(1)
結(jié)果是不一樣的
X等于0
最近生成的數(shù)
一般為科學(xué)型數(shù)值
這個(gè)值也是不變的
rnd(x)
省略x不寫
就和X0
效果一樣
=========================
Randomize
用
number
將
Rnd
函數(shù)的隨機(jī)數(shù)生成器初始化,該隨機(jī)數(shù)生成器給
number
一個(gè)新的種子值。如果省略
number,則用系統(tǒng)計(jì)時(shí)器返回的值作為新的種子值。
如果沒(méi)有使用
Randomize,則(無(wú)參數(shù)的)Rnd
函數(shù)使用第一次調(diào)用
Rnd
函數(shù)的種子值。
注意
若想得到重復(fù)的隨機(jī)數(shù)序列,在使用具有數(shù)值參數(shù)的
Randomize
之前直接調(diào)用具有負(fù)參數(shù)值的
Rnd。使用具有同樣
number
值的
Randomize
是不會(huì)得到重復(fù)的隨機(jī)數(shù)序列的。
一般在使用rnd獲取隨機(jī)數(shù)
都是
randomize
int(rnd*(上限-下限+1)+下限)
這2個(gè)函數(shù)的X都是省略不寫
Private Sub Command1_Click()
Dim a(1 To 100) As Integer
Dim i As Integer, j As Integer, k As Integer
For i = 1 To 100 '給數(shù)組a一百個(gè)元素賦值,并換每行十個(gè)數(shù)字輸出來(lái)窗體上
a(i) = Int(Rnd * 101)
k = k + 1
Print Tab((k - 1) * 5); a(i);
If k = 10 Then k = 0: Print
Next i
For i = 100 To 2 Step -1 '用冒泡排序法對(duì)數(shù)組進(jìn)行排序
For j = 1 To i - 1
If a(j) a(j + 1) Then
t = a(j): a(j) = a(j + 1): a(j + 1) = t
End If
Next j
Next i
For i = 1 To 100 '輸出排好序的數(shù)組
k = k + 1
Print Tab((k - 1) * 5); a(i);
If k = 10 Then k = 0: Print
Next i
End Sub
取隨機(jī)數(shù)可以用 Random 類。
給定10個(gè)數(shù)的話,可以把這10個(gè)數(shù)放在一個(gè)數(shù)組里,然后取0~9的范圍內(nèi)的隨機(jī)數(shù),用它當(dāng)數(shù)組下標(biāo)取數(shù)組成員即可。
方法名稱:next();功能描述:返回一個(gè)0~2147483647之間的整數(shù)
方法名稱:next(i);功能描述:返回一個(gè)0~i之間的整數(shù)
方法名稱:next(i,j);功能描述:返回一個(gè)i~j之間的整數(shù)
方法名稱:Nextdouble();功能描述:返回一個(gè)0~1之間的隨機(jī)小數(shù)
================
使用方法:
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim rand = New System.Random()
MsgBox(rand.next().ToString())
End Sub
==========================
產(chǎn)生N個(gè)不同數(shù)的話,我給你個(gè)我寫的VB的代碼,你稍微改下:
產(chǎn)生0-10的數(shù):
Private Sub Command1_Click()
Randomize
Dim a(10) As Long
n = 10
For i = 0 To n
a(i) = Int(Rnd() * (n + 1))
For j = 0 To i - 1
If a(i) = a(j) Then
i = i - 1
Exit For
End If
Next
Next
For i = 0 To n
Print a(i)
Next
End Sub