Int((100 * Rnd + 1))

解决方案 »

  1.   

    Int(100 * Rnd +  Rnd)
      

  2.   

    为了生成某个范围内的随机整数,可使用以下公式:Int((upperbound - lowerbound + 1) * Rnd + lowerbound)这里,upperbound 是随机数范围的上限,而 lowerbound 则是随机数范围的下限。注意 若想得到重复的随机数序列,在使用具有数值参数的 Randomize 之前直接调用具有负参数值的 Rnd。使用具有同样 number 值的 Randomize 是不会得到重复的随机数序列的。
      

  3.   

    Dim RandomData as integer
    Dim A,B,C,D as IntegerRandomData=Rnd Mod 100
    A=RandomData'get B
    RandomData=Rnd Mod 100
    While RandomData=A
       RandomData=Rnd Mod 100
    WEND
    B=RandomData'get C
    RandomData=Rnd Mod 100
    While RandomData=A or RandomData=B
    RandomData=Rnd Mod 100
    WEND
    C=RandomData'get D
    RandomData=Rnd Mod 100
    While RandomData=A or RandomData=B or RandomData=C
    RandomData=Rnd Mod 100
    WEND
    D=RandomDataMSGBOX(A)
    MSGBOX(B)
    MSGBOX(C)
    MSGBOX(D)
      

  4.   

    dim InitNum(0 To 3) As Long    For I = 0 To 3
            InitNum(I) = Int(10 * Rnd)
            For J = 0 To I - 1
                '检查重复 并重新生成随机数
                If InitNum(I) = InitNum(J) Then
                    InitNum(I) = Int(10 * Rnd)
                    J = -1 '从第一个数 重新检查
                End If
            Next J
            TxtNum(I) = ""
        Next I
      

  5.   

    你们究竟有没有学过算法的呀?!pasl的方法虽然可以但效率非常低。
    下面是其中的一种算法:
    Public Sub GenerateNoneRepeatRndNum(ByVal MaxNumber As Long, ByRef rndArray() As Long)    Dim tmpArray()      As Long
        
        ReDim tmpArray(0 To MaxNumber)
        ReDim rndArray(0 To MaxNumber)
        
        Dim i       As Long
        
        For i = 0 To MaxNumber
            tmpArray(i) = i
        Next
        
        Dim iPos    As Long
        
        Randomize (Timer)
        
        For i = MaxNumber To 0 Step -1
            iPos = Int(Rnd * i)
            rndArray(MaxNumber - i) = tmpArray(iPos)
            tmpArray(iPos) = tmpArray(i)
        Next
        
    Exit Sub
      

  6.   

    viperstorm(你也真调皮呀,都叫你不要到处乱扔东西…) 你的方法很好!Public Sub GenerateNoneRepeatRndNum(Byval RndNum as long ,ByVal MaxNumber As Long, ByRef rndArray() As Long)    Dim tmpArray()      As Long
        
        ReDim tmpArray(0 To MaxNumber)
        ReDim rndArray(0 To RndNum)
        
        Dim i       As Long
        
        For i = 0 To MaxNumber
            tmpArray(i) = i
        Next
        
        Dim iPos    As Long
        
        Randomize (Timer)
        
        For i =0 to  RndNum 
            iPos = Int(Rnd * (maxnumber-i))
            rndArray(i) = tmpArray(iPos)
            tmpArray(iPos) = tmpArray(i)
        Next
        
    Exit Sub
      

  7.   

    我替你通用化了一下,可以生成rndNum个范围再0-maxnumber中的不重复随机数!
      

  8.   

    老实说 viperstorm(你也真调皮呀,都叫你不要到处乱扔东西…) 的代码我看不明白啊,我不是高手啊,拜托,帮忙帮到底,能不能加注释,谢谢!
      

  9.   

    Public Sub GenerateNoneRepeatRndNum(Byval RndNum as long ,ByVal MaxNumber As Long, ByRef rndArray() As Long)    Dim tmpArray()      As Long
        
        ReDim tmpArray(0 To MaxNumber)
        ReDim rndArray(0 To RndNum)
        
        Dim i       As Long
        
        '初始化随机数范围(0-MaxNumber)
        For i = 0 To MaxNumber
            tmpArray(i) = i
        Next
        
        Dim iPos    As Long
        
        Randomize (Timer)
        
        For i =0 to  RndNum 
            iPos = Int(Rnd * (maxnumber-i))              '获取随机数位置
            rndArray(i) = tmpArray(iPos)                 '随机数复制
            tmpArray(iPos) = tmpArray(i)                 '将已用的随机数与未用的随机数调换,以保证前0-(maxnumber-i)位随机数都没有被使用过,这一句是保证不重复随机数的关键语句
        Next
        
    Exit Sub