Private Sub Rndnum(a() As Integer)
Randomize ''   再程序中加入次函数即可产生不重复的数
Dim i, j
For i = LBound(a) To UBound(a)
100:
   If i >= LBound(a) Then
     a(i) = Int(Rnd * (UBound(a) + 1))
  
    If a(i) >= LBound(a) Then
    
     For j = LBound(a) To i - 1
      If a(i) = a(j) Then GoTo 100
     Next
    Else
     GoTo 100
    End If
     
    
    
   End If
NextEnd SubPrivate Sub Command1_Click()
List1.Clear
Dim a(m-1) As Integer '这里是生成的随机数数列,也就是0-(m-1)
'在定义一个存放你m个数的一维数组,b(m-1)
dim b(m-1) as Integer
'初始化b() ,存入m个数
Rndnum a() '生成随机数列
For i = LBound(a) To UBound(a)
 List1.AddItem b(a(i)) '根据随机数列,取出m
Next
End Sub

解决方案 »

  1.   

    参考:
    Public Sub GenerateNoneRepeatRndNum(Byval RndNum as long ,ByVal MaxNumber As Long, ByRef rndArray() As Long)    Dim tmpArray()      As Long
        
        ReDim tmpArray(0 To MaxNumber)
        ReDim rndArray(0 To RndNum)
        
        Dim i       As Long
        
        '初始化随机数范围(0-MaxNumber)
        For i = 0 To MaxNumber
            tmpArray(i) = i
        Next
        
        Dim iPos    As Long
        
        Randomize (Timer)
        
        For i =0 to  RndNum 
            iPos = Int(Rnd * (maxnumber-i))              '获取随机数位置
            rndArray(i) = tmpArray(iPos)                 '随机数复制
            tmpArray(iPos) = tmpArray(i)                 '将已用的随机数与未用的随机数调换,以保证前0-(maxnumber-i)位随机数都没有被使用过,这一句是保证不重复随机数的关键语句
        Next
        
    Exit Sub
      

  2.   

    '初始化随机数范围(0-MaxNumber)
        For i = 0 To MaxNumber
            tmpArray(i) = i '////将这一句改成你的m个数的数列的赋值
        Next
      

  3.   

    viperstorm说的对
    还可以用结构体去做。