定义一个数组tree(10)
现在使用随机函数随机填充tree数组,要求填充的数为整数,填充数值范围在1~10,而且1~10的数字不能重复填写
请问如何实现???如果每次生成1~10的随机整数,然后再在tree数组中查找是否有相同的数,如果没有相同的,那就填充到数组中,如果有相同的,那就继续随机产生数。这样可以实现,但觉得效率太低,有更好的办法吗???

解决方案 »

  1.   

    Private Sub Command1_Click()
        Dim cl As New Collection
        Dim i As Integer
        Dim j As Integer
        Dim tree(1 To 10) As Integer
        For i = 1 To 10
            cl.Add i
        Next i    Randomize    For i = 1 To 10
            j = Int(Rnd * cl.Count + 1)
            tree(i) = cl(j)
            Debug.Print tree(i)
            cl.Remove j
        Next iEnd Sub
      

  2.   

    Private Sub Form_Load()
     Dim ARR
        Dim i As Integer
        Dim j As Integer
        ARR = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
        i = Int(Rnd * 10 + 1)
       For j = 0 To 9
       Randomize
       i = Int(Rnd * 10)
       If i <> j Then
       A = ARR(i)
       b = ARR(j)
          ARR(i) = b
          ARR(j) = A
          End If
            Next
    For j = 0 To 9
    S = S & ARR(j) & ","
     Next
     MsgBox S
    End Sub
      

  3.   


        Dim arr
        Dim i As Long, r As Long
        Dim tmp As Long
        
        arr = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
        Randomize
        For i = 0 To 9
            r = Int(Rnd * (12 - i) + 1) '随机数1-10
            tmp = arr(i)
            arr(i) = arr(r - 1)
            arr(r - 1) = tmp
        Next
        
        '以下是输出结果
        For i = 0 To UBound(arr)
            Debug.Print arr(i);
        Next
        Debug.Print
      

  4.   

    上面想过头了,改一下:    Dim arr
        Dim i As Long, r As Long
        Dim tmp As Long
        
        arr = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
        Randomize
        For i = 0 To 9
            r = Int((9 - i + 1) * Rnd + i)
            tmp = arr(i)
            arr(i) = arr(r)
            arr(r) = tmp
        Next
        
        '以下是输出结果
        For i = 0 To UBound(arr)
            Debug.Print arr(i);
        Next
        Debug.Print