Dim a As Integer = CInt(Int((9999 - 1000 + 1) * Rnd() + 1000))
成都創(chuàng)新互聯(lián)公司長(zhǎng)期為千余家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為翁牛特企業(yè)提供專業(yè)的網(wǎng)站制作、網(wǎng)站建設(shè),翁牛特網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。
注:randomvalue = CInt(Int((upperbound - lowerbound + 1) * Rnd() + lowerbound))
這里,upperbound 是此范圍內(nèi)最大的數(shù),lowerbound 是此范圍內(nèi)最小的數(shù)。
'項(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)采納參考!謝謝!
1.隨機(jī)產(chǎn)生英文字母
Randomize() '功 能:初始化隨機(jī)數(shù)發(fā)生器
Me.txt1.Text = Chr(Asc("a") + Int(Rnd() * 26))
'Rnd 函數(shù)返回小于 1 但大于或等于 0 的值。
'0 = Rnd() * 26 26 是含小數(shù)位的數(shù)
'Int(Rnd() * 26) 轉(zhuǎn)換為整型,就是0~25的隨機(jī)數(shù)
'Asc("a") 得到a的ASCii數(shù)值,是整數(shù)97(A是65)
'a~z的ASCii為97~122 ,即為a~z之間的字母為97加(0~25)
'Asc("a") + Int(Rnd() * 26)為97到122的隨機(jī)數(shù)
'Chr()又可以起到轉(zhuǎn)換成字符的功能,Chr(97)表示a (a轉(zhuǎn)換成數(shù)值又是Asc("a")=97)
'Chr(Asc("a") + Int(Rnd() * 26))就是a~z的隨機(jī)數(shù)了
Randomize() '再次初始化隨機(jī)數(shù)發(fā)生器
Me.txt2.Text = Chr(Asc("A") + Int(Rnd() * 26)) '這里是A~Z的隨機(jī)數(shù)
'也可以換這種寫(xiě)法
Randomize()
Me.txt1.Text = Chr(Int((26 * Rnd()) + 97)) '這里是a~z的隨機(jī)數(shù)
'這是在你知道ASCII碼的情況之下(a~z為97~122,A~Z為65~90)
'Rnd()為0~0.9999999.....的隨機(jī)數(shù)
' 26 * Rnd()為0~25.9999...的隨機(jī)數(shù)
'Int((26 * Rnd())為0~25的隨機(jī)數(shù)
'Int((26 * Rnd()) + 97)為97~122的隨機(jī)數(shù)
'Chr(Int((26 * Rnd()) + 97))就是a~z的隨機(jī)數(shù)了
Randomize()
Me.txt2.Text = Chr(Int((26 * Rnd()) + 65)) '這里是A~Z的隨機(jī)數(shù)
'至于同時(shí)在一處隨機(jī)大寫(xiě)或小寫(xiě),ASCII碼的數(shù)字又不挨在一起(65-90,97-122),比較麻煩。想寫(xiě)的話,你可以自己想一下怎么辦
2.數(shù)字怎樣轉(zhuǎn)換成ASCII碼所對(duì)應(yīng)的字母
Chr()函數(shù)將數(shù)字轉(zhuǎn)換成ASCII對(duì)應(yīng)的字母,Asc()函數(shù)將字母根據(jù)ASCII表轉(zhuǎn)換成數(shù)字
Chr(97)表示a (a轉(zhuǎn)換成數(shù)值又是Asc("a")=97)
3.加到數(shù)組,你可以放在一個(gè)for循環(huán)里
比如
Dim arylst1 As New ArrayList
Dim arr1() As String '數(shù)組
Dim str1 As String
For i As Integer = 1 To 15 '比如我想要15個(gè)隨機(jī)字母
Randomize()
str1 = Chr(Int((26 * Rnd()) + 65)) '這里是A~Z的隨機(jī)數(shù)
arylst1.Add(str1)
Next
ReDim arr1(arylst1.Count - 1) '這里是為了比較動(dòng)態(tài),可以只改變 i 的范圍來(lái)決定要多少個(gè)隨機(jī)字母
'當(dāng)然也可以寫(xiě)死,在前面直接定義為 arr1(14),下次要改的時(shí)候就要改定義的地方和i的范圍,改兩個(gè)地方
arylst1.CopyTo(arr1)
'就把數(shù)值拷貝到數(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è)我寫(xiě)的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
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Randomize() '產(chǎn)生隨機(jī)數(shù)種子 以防止每次生成結(jié)果都一樣
Dim a(100) As Integer '聲明數(shù)組存放數(shù)據(jù) 用來(lái)保存隨機(jī)數(shù)結(jié)果
Dim max As Integer, min As Integer '聲明兩個(gè)變量存最大值和最小值
min = 1000 : max = 0 '設(shè)置初值
For i = 0 To 99 '循環(huán)100次
a(i) = Int(Rnd() * 1000 + 1) '用rnd生成一個(gè)隨機(jī)數(shù) 由于rnd范圍為0-1之間的小數(shù).所以*1000設(shè)置他的范圍為0到999之間 加1變成1到1000之間
If a(i) = max Then max = a(i) '如果當(dāng)前數(shù)值大于最大值的變量就保存
If a(i) = min Then min = a(i) '如果當(dāng)前數(shù)值小于最小值的變量就保存
Next
MsgBox("最大值為" max)
MsgBox("最小值為" min)
End Sub