Randomize Timer
dRnd = Rnd
Index = dRnd * 1000 + 1产生后Index 有重复的值,我不想Index有重复的值,请问还有别的方法吗,该如何解决这个问题?

解决方案 »

  1.   

    For i = 1 To 1000
       Randomize Timer
       dRnd = Rnd
       Index = dRnd * 1000 + 1
    next i
      

  2.   

    For i = 1 To ICount
       Randomize Timer
       dRnd = Rnd
       Index = dRnd * Num + 1
    next i
    生成的随机数不能大于Num
      

  3.   

    sub pick()
        Dim a(999) As Integer
        Dim x As Integer
        
        '' 初始化0-999的值到一个数组,其实这个值可任选
        For i = 0 To 999
           a(i) = i
        Next i
        Randomize Timer '' 加入此语句,置随机数种子
        For i = 999 To 0 Step -1 ‘注意这里大小是99而不是400
           x = Int(i * Rnd)
           debug.print a(x)  ' 随机选取0-999之间的数,但不重复
           a(x) = a(i)
       Next i
    end sub
      

  4.   

    dim sum as string
    For i = 1 To 1000
       Randomize Timer
       dRnd = Rnd
       Index = dRnd * 1000 + 1
       if istr(sum,index) <> 0 then
       sum=sum & cstr(index)
       else
       i=i-1
    next i
      

  5.   


    下面代码产生999个不同随机数。Private Sub Form_Load()
       Dim n(1 To 1000), i, j, q
         
         For i = 1 To 1000
            n(i) = 0
         Next
         j = 0
         Randomize Timer
         Do While j < 999
            q = Int(Rnd(1) * 999 + 1)
            If n(q) = 0 Then
                Debug.Print q
                n(q) = 1
                j = j + 1
            
            End If
         Loop
        
    End Sub