vb随机取数组内数字,不重复!

2025-03-20 04:39:43
推荐回答(4个)
回答1:

Private Sub Command1_Click()
MsgBox GetRndItem(3)
End Sub
Function GetRndItem(num As Integer) As String
    Dim a
    a = Split("125 625#235 456#658 125#125 151#152 841#152 151", "#")
    Dim i As Integer
    Randomize
    Dim Index As Integer
    Dim Text As String
    Dim arU As Integer
    arU = UBound(a)
    If num > arU + 1 Then num = arU + 1
    For i = 1 To num
        Index = Int(Rnd * arU)
        Text = Text & vbTab & a(Index)
        a(Index) = a(arU)
        arU = arU - 1
    Next
    GetRndItem = Mid(Text, 2)
End Function


每次产生一随机数组索引,随机索引范围是从最小下标到最大下标前一位。取出随机位的数组元素

之后,用最后一数组元素替换该位,然后把最后一位用Redim preserve压缩掉。不过压缩不用了,只要用一个变量arU来表示数组中最大有效数下标位就可。

回答2:

取完随机数之后用for循环与你取得数进行对比,如果相同则重新取一个就好了

回答3:

希望下面的代码能帮到你:

Private Sub Command1_Click()
Dim a(10) As Integer
Randomize
For i = 0 To 9
a(i) = i
Next i
n = Val(InputBox("要取几个不重复的数:"))
If n > 10 Then Exit Sub
For i = n To 1 Step -1
t = Int(i * Rnd)
Print a(t);
a(t) = a(i)
Next i
Print
End Sub

回答4:

看看这个吧,我做的是从数据库抽数,你也可以从数组抽数