从0到9里面随机生成7个数,要不重复的7个数,然后显示出来,VB程序应该怎么写

怎么这么乱啊,哪位朋友能给个简单的啊,就是随机生成7个不重复的数,在0到9这10个数里

Private Sub Command1_Click()
Dim a(9) As Long, i As Integer, b() As Long
Cls
For i = 0 To 9
a(i) = i
Next
b = RandomSelect(a, 7)
For i = 0 To 6
Print b(i)
Next
End Sub

Function RandomSelect(ByRef Arr() As Long, ByVal Need As Long) As Long()
Dim Low As Long ' 数组下标
Dim Result() As Long ' 临时数组, 用于返回数据
Dim Count As Long ' 临时数组中有效数据个数
Dim Rand As Long ' 随机数

Result = Arr ' 复制数组以便于修改时不破坏原数据
Low = LBound(Arr) ' 得到数组下标
Count = UBound(Arr) - Low + 1 ' 得到数组元素个数

Randomize
Do While Count > Need ' 如果还有多余的数据
Rand = CLng(Int(Rnd() * Count)) ' 随机选择一个并去掉 (用最后的一个元素填充)
Result(Low + Rand) = Result(Low + Count - 1)
Count = Count - 1 ' 将元素个数减 1
Loop

' 重新定义数组大小并返回
ReDim Preserve Result(Low To Low + Count - 1)
RandomSelect = Result
End Function
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-09-20
'在窗体上点击
Private Sub Form_Click()
Dim I, J As Integer
Dim a(7), B(7) As Integer

Randomize
a(0) = Int(Rnd() * 10)
For I = 1 To 6
a(I) = Int(Rnd() * 10)
For J = 0 To I - 1
If a(J) = a(I) Then
J = 7
I = I - 1
End If
Next J
Next I
For I = 0 To 6
Print a(I) & " ";
Next I
Print
End Sub本回答被提问者采纳
第2个回答  2011-09-20
最简单,易懂的~
private sub command1_click()
dim a(6) as integer '定义数组
for i = 0 to 6
10 '设置返回点
a(i)=int(rnd*10) '产生0-9的随机整数
for j = 0 to i '检验是否重复
if a(i)= a(j) then goto 10 '如果重复,返回,重新产生
next j
print a(i); '窗体打印出产生的随机数
next i
end sub
第3个回答  2011-09-20
Private Sub Command1_Click()
Dim a(1 To 7) As Integer
Randomize
For i = 1 To 7 '产生不同随机数
a(i) = Int(Rnd * 10)
For j = 1 To i - 1
If a(i) = a(j) Then
i = i - 1
Exit For
End If
Next j
Next i

For i = 1 To 7 '输出产生随机数
Print a(i);
Next i
Print
End Sub