程序加载时,系统自动生成一个随机的四位数,如何使这个数是一个不重复的四位数?
大家帮忙给个主意!谢谢哈!

解决方案 »

  1.   

    生成某个范围内的随机整数,可使用以下公式:
    Int((upperbound - lowerbound + 1) * Rnd + lowerbound)所以4位的随机数应该是:Int((9999- 1000 + 1) * Rnd + 1000)即:
    Randomize Timer
    Int(9000 * Rnd + 1000)
      

  2.   

    Dim tmp As New Collection, i As Long, j As Long
    Dim s(3) As String
    For i = 0 To 9
        tmp.Add i
    Next
    Randomize
    For i = 0 To 3
        j = Int(Rnd * tmp.Count) + 1
        s(i) = tmp(j)
        tmp.Remove j
    Next
    Debug.Print Join(s, "")
      

  3.   

    dim a,b,c,valu(4)
    randomize timerfor a=1 to 3
      valu(a)=fix(rnd*8)+1
      for b=1 to a-1
        if valu(a)=valu(b) then exit for
      next
      if b<a then a=a-1 else debug.print valu(a);
    next
      

  4.   

    不好意思,应该是for a=1 to 4才会生成4位数,哈哈!!
      

  5.   

    “不重复”是不是指各位上的数字都不同????用下面代码产生得到四位数各位永远不会重复。。
    Private Sub Form_Click()
    Dim a(9) As Integer
    Dim k As Integer
    Randomize
    For i = 0 To 9
    a(i) = i
    Next
    k = Int((9) * Rnd + 1)
    temp = a(9)
    a(9) = a(k)
    a(k) = temp
    For i = 8 To 6 Step -1
    k = Int((9) * Rnd)
    temp = a(i)
    a(i) = a(k)
    a(k) = temp
    Next
    Debug.Print a(9) * 1000 + a(8) * 100 + a(7) * 10 + a(6)
    End Subk = Int((9) * Rnd + 1)
    temp = a(9)
    a(9) = a(k)
    a(k) = temp
    主要是为了产生一个首位不为〇的四位数,如果你的要求允许首位为0(例如现在很多网站用的验证码),可把它删掉再改改下面的循环就可以了。
      

  6.   

    建议楼主使用lsftest()提供的算法。
    (那种算法叫做“跳蚤算法”。通常的算法需要检测重复值,而这个算法不需要检测,一次成功。呵呵!至于这个算法的由来你问lsftest就知道了。)
      

  7.   

    那种算法叫做“跳蚤算法”。通常的算法需要检测重复值,而这个算法不需要检测,一次成功。呵呵!至于这个算法的由来你问lsftest就知道了。
    ====================================================
    糟糕,班门弄斧了。
    翻版的遇着原版的。只有:
    溜。
      

  8.   

    不过溜之前,还是想问一句,我实在是想不明白上面kofboyx(阿里巴巴)兄的方法,有哪位看明白了给解释一下吗????