程序加载时,系统自动生成一个随机的四位数,如何使这个数是一个不重复的四位数?
大家帮忙给个主意!谢谢哈!
大家帮忙给个主意!谢谢哈!
解决方案 »
- 比较有意思的问题,vb如何截获网页中一个flash游戏提交给asp的参数名和值
- 如何解决word中表达式计算结果有效数字问题
- ============如何读取Access数据库中所有表的表名============(UP有分)
- 软件打包
- 急问:自制控件的升级问题
- 为什么生成的txt中有“” 怎样去掉 在线等待
- 问题急等解决,请大家帮忙
- 急,那里出错了, 基础问题!!
- 怎样作有进度条指示的对sql数据库的备份和恢复
- 简单日期函数问题
- 这种35(10) 30(05) 00(21) 05(81) 102(08) 以n(x)形式组成的字符,如何以n为判断条件对n(x)排序?
- 俺编写了一个播放VCD的DLL.拿出来和大家分享.快来啊,别错过!!!
Int((upperbound - lowerbound + 1) * Rnd + lowerbound)所以4位的随机数应该是:Int((9999- 1000 + 1) * Rnd + 1000)即:
Randomize Timer
Int(9000 * Rnd + 1000)
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, "")
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
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(例如现在很多网站用的验证码),可把它删掉再改改下面的循环就可以了。
(那种算法叫做“跳蚤算法”。通常的算法需要检测重复值,而这个算法不需要检测,一次成功。呵呵!至于这个算法的由来你问lsftest就知道了。)
====================================================
糟糕,班门弄斧了。
翻版的遇着原版的。只有:
溜。