应该是这样吧:
dim i,j
randomize
i=int(255*rnd+1)
j=int(255*rnd+1)这样得到的是1到255范围之内的随机数,不可能重复

解决方案 »

  1.   

    Dim Count as integer,lowlimit as integer,uplimit as integer
        Dim i As Integer,i As Integer
        Dim TempGet() As Integer
        
        ReDim TempGet(Count) As Integer
        
        For i = 0 To Count - 1
            TempGet(i) = (UpLimit - LowLimit - i) * Rnd() + LowLimit
    Check:
            For j = 0 To i - 1
                If TempGet(i) = TempGet(j) And i <> j Then
                    TempGet(i) = TempGet(i) + 1
                    GoTo Check
                End If
            Next j
        Next i測試通過
      

  2.   

    再具体些,这样吧:
    dim ix as integer,iy as integer,iTmp as integer
    dim aryTemp(10) as integer
    randomize
    for ix=0 to 9
      '获取随机数
      iTmp=int(255*rnd+1)
      '循环原先的数组检查重复性
      for iy=0 to ix
        if iTmp=aryTemp(iy) then 
          '如果重复则退回前一步并退出检查循环
          ix=ix-1
          exit for
        else
          '如果不重复
          if iy=ix then
            '将合法随机数添加到数组中的最末位
            aryTemp(ix)=iTmp
          endif
        endif 
      next
    next数组里的10个数就是1至255范围内的随机数,并都做了重复性的检查
      

  3.   

    楼上的说的对,现在我还没有其它办法例如,
    要产生1到10之间的随机数的话,先声明一个有6个元素的数组
    Dim a(10) As Integer, i As Integer, j As Integer
    Dim tru As Boolean
    Dim ran As Integer
    i = 1: tru = False
    Do While (i <= 10)
        ran = Int(10 * Rnd + 1)
        For j = 1 To i - 1
            If ran = a(j) Then tru = True
        Next j
        If tru = False Then
            a(i) = ran
            i = i + 1
        End If
        tru = False
    Loop
      

  4.   

    private Sub GetRand(Count As Long, LowLimit As Long, UpLimit As Long)
    '    Count '用於記數
    '    lowlimit '下限
    '    uplimit '上限 
        Dim i As Integer,i As Integer    
        Dim TempGet() As Integer         '你所要的結果
        
        ReDim TempGet(Count) As Integer  
        
        For i = 0 To Count - 1           '共需要這么多個數
            Randomize                    '复位隨机數种子
            TempGet(i) = (UpLimit - LowLimit - i) * Rnd() + LowLimit
    Check:
            For j = 0 To i - 1           '對每一個生成的隨机數與以前生成的數相比較
                If TempGet(i) = TempGet(j) And i <> j Then
                                         '如果有重復就自加一
                    TempGet(i) = TempGet(i) + 1
                    GoTo Check           '并重新檢查
                End If
            Next j
            Debug.Print TempGet(i)
        Next i
    End Sub可以這樣測試:
        重復調用getrand(4,1,4),每次的結果一定是1,2,3,4,但順序是隨机的
      

  5.   

    其实!你用rnd函数很爽的完成,你自己可以编,这样很灵活,别人的帮助总是有限的,如果你对rnd不了解请看MSDN!!!
    另外,昨天好象有类似的,你查一下,应该没问题!!!