for I = 0 to 19
  A[I] = I
endforfor I = 0 to 19
  J = Random(20 - I)
  B[I] = A[J]
  A[J] = A[20 - I]
  A[20 - I] = B[J]
endfor

解决方案 »

  1.   

    for I = 0 to 19
      A[I] = I
    endforfor I = 0 to 9
      J = Random(20 - I)
      B[I] = A[J]
      A[J] = A[20 - I]
      A[20 - I] = B[J]
    endfor 
      

  2.   

    Private Sub Command1_Click()
        Dim a(10), b(20)
        Randomize
        For i = 1 To 20
            b(i) = i
        Next
        For i = 1 To 10
            j = Int(Rnd() * (10 - i + 1) + 1)
            a(i) = b(j)
            b(j) = b(10 - i + 1)
        Next
        Debug.Print "No        Seat"
        For i = 1 To 10
            Debug.Print i, a(i)
        Next
    End Sub
    ok?
      

  3.   

    Private Sub Command1_Click()
        Dim a(10), b(20)
        Randomize
        For i = 1 To 20
            b(i) = i
        Next
        For i = 1 To 10
            j = Int(Rnd() * (20 - i + 1) + 1)
            a(i) = b(j)
            b(j) = b(20 - i + 1)
        Next
        Debug.Print "No        Seat"
        For i = 1 To 10
            Debug.Print i, a(i)
        Next
    End Sub
      

  4.   

    这是一个取5次不重复数的例子:
    Private Sub Command1_Click()
      Dim a(1 To 30) As Integer
      Dim i As Integer
      Dim j As Integer
      Dim Str As String
      Dim k As Integer
      For i = 1 To 30
          a(i) = i
      Next
      Randomize
      For i = 1 To 5
          j = Rnd() * (30 - i) + 1
          Str = Str & a(j) & ","
          k = a(31 - i)
          a(31 - i) = a(j)
          a(j) = k
      Next
      MsgBox Str
    End Sub