对数组进行随机的排序,就是去掉重复的随机数,我已经用C++实现了,但用VB实现就出问题了
下面是代码,先谢谢各位
     Dim a(10) As Integer
        Dim temp(10) As Integer
        Dim i As Integer = 0 
        For i = 0 To 9
            a(i) = i
            temp(i) = 11
        Next        
        Randomize(Timer()) '用时间初始化随即种子 
 
        Dim are As Integer = 0
        
      while i<=10   '假设循环10次,应该用无限循环 
            Dim flag As Boolean = True '标记变量,false表示随即数产生过,true表示没产生过
                                           '默认是没生成过 
            Dim randTemp As Integer
            randTemp =  rnd () * 10 '生成0到9的随即数 
            Dim j As Integer
            
            For j = 0 To j = 9 '判断该随即数是否生成过 
                If (temp(j) = a(randTemp)) Then
                    flag = False
                        Exit For
                End If
            Next
            If flag Then '根据flag赋值 
                Dim k As Integer
                For k = 0 To k = 9
                    If (temp(k) = 11) Then
                        temp(k) = a(randTemp)
                        are = are + 1
                           Exit For
                    End If
                Next
            End If
            If are = 10 Then
              exit while
            End If
       end while 

解决方案 »

  1.   


        Dim b(9) As Boolean
        Dim i As Long
        Dim r As Long
        Dim a(9) As Long
        
        Randomize
        While i < 10
            r = Int(Rnd(1) * 10)
            If b(r) = False Then
                a(i) = r
                b(r) = True
                i = i + 1
            End If
        Wend
      

  2.   

    天哪,楼主的代码里竟然还有语法错误。
    整理了一下,不过temp数组里也只是将数组a的顺序打乱了一下重新排列,不知道楼主是要干什么。    Dim a(9)     As Integer
        Dim temp(9)  As Integer
        Dim i        As Integer
        Dim j        As Integer
        Dim k        As Integer
        Dim flag     As Boolean
        Dim randTemp As Integer
        Dim are      As Integer
        
        For i = 0 To 9
            a(i) = i
            temp(i) = 11
        Next
        Randomize  '用时间初始化随即种子    are = 0
        Do While are < 10      '假设循环10次,应该用无限循环
            flag = True       '标记变量,false表示随即数产生过,true表示没产生过        randTemp = Rnd() * 9    '生成0到9的随即数        For j = 0 To 9                 '判断该随即数是否生成过
                If temp(j) = a(randTemp) Then
                    flag = False
                    Exit For
                End If
            Next
            If flag Then       '根据flag赋值
                For k = 0 To 9
                    If (temp(k) = 11) Then
                        temp(k) = a(randTemp)
                        are = are + 1
                        Exit For
                    End If
                Next
            End If
        Loop
      

  3.   

    你要实现的目标不就是把10个数顺序打乱吗?有必要去随机生成这些数 还要再判断是否重复?
    给你个代码参考吧
      Dim a(9) As Integer, i As Long, rd As Integer, t As Long
      Randomize Timer
      For i = 0 To 9
        a(i) = i
      Next
      For i = 0 To 8
        rd = Fix(Rnd * (10 - i)) + i
        t = a(i)
        a(i) = a(rd)
        a(rd) = t
      Next