VB 中怎么用随机函数产生50个10—100之间的互不相同的整数

用VB做

思路是先设置一个定额数组 要取的值一一对应位置,每次抽取随机量就对比对应位置的值是否为0 如果不为0 就取 并置为0
直到取完为止
注意的是 待抽数组的长度一定要大于或等于要抽的数量 否则有可能进入死循环

Private Sub Form_Click()
'定义一个数组,两个变量
Dim a%(90), rNum%, rid%
'循环90次
For i = 0 To 90
'为数组赋值,每个值为当前i+10 即对应10-100
a(i) = i + 10
Next

'Do while循环 条件为小于50
Do While rid < 51
Randomize '初始化随机种子
rNum = Int(Rnd * 91) '生成随机量 0-90
If a(rNum) <> 0 Then '判断对应数组位置值是否为0
Print rNum '不为0 输出
a(rNum) = 0 '并置对应位为0
rid = rid + 1 '计数器加1
End If
DoEvents '返还系统控制
Loop
End Sub
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-04-02
最简单的方法就是利用数组,产生一个数以后就判断前面是否已经有这个数,如果有,那么重新生成这个数。
Private Sub Form_Click()
Dim a(1 To 50) As Integer, i As Integer, j As Integer
Randomize
For i = 1 To 50
a(i) = Int(Rnd * 91 + 10)
For j = 1 To i - 1
If a(i) = a(j) Then i = i - 1
Next j
Next i
For i = 1 To 50
Print a(i);
If i Mod 5 = 0 Then Print
Next i
End Sub
第2个回答  2008-04-03
给你写个函数吧
'生成从iStar开始(包括)到iEnd结束(包括)的iCount个整数的序列,保存到n() as integer数组里
Private Sub NumRnd(iStar As Integer, iEnd As Integer, iCount As Integer, n() As Integer)
Dim i, j
ReDim n(iCount - 1) As Integer

Randomize
n(0) = Int(Rnd * (iEnd - iStar + 1)) + iStar
For i = 0 To iCount - 1
n(i) = Int(Rnd * (iEnd - iStar + 1)) + iStar
For j = 0 To i - 1
DoEvents
If n(j) = n(i) Then i = i - 1: Exit For
Next j
Next i
End Sub
使用方法
dim k() as integer
NumRnd 50, 100, 10, k '生成10个50到100的整数
第3个回答  2013-04-04
Private Sub Command1_Click()
Dim a(1 To 50) As Integer, i As Integer, j As Integer
For i = 1 To 50
Randomize
a(i) = Int(Rnd * 90 + 10)
For j = 1 To i - 1
If a(i) = a(j) Then i = i - 1
Next j
Next i
For i = 1 To 50
Print a(i);
n=n+1
if n Mod 5 = 0 Then ‘每行输出5个数
print
End If
Next i
End Sub
第4个回答  2008-04-02
randomize()
for i=10 to 100
form1.print int(rnd*(100-10+1)+10)
next
相似回答