产生随机数据的概率问题,大家有什么更好的经验。
想法是通过产生一个随机的数字然后看看数据库中对应这个随机数字是否已经使用如果已经使用则再循环再产生随机直到找到一个还没有使用的数字然后写入数据库使用这个数字。但是现在有一个问题我不能确定应该设定多少循环了就是FOR从开始到那里结束的问题。因为我不知道这个随机数产生的概率如何分布起码只是循环一遍是肯定不能全部随机一遍的我测试了一下。那么加两倍(就是下面代码里的to big*2)又怎么样基本上可以说全部随机一遍那多了呢,不好说。请问谁有这方面的资料或者怎么能更好的解决这个问题呢。
small和big是前面取得的两个范围比如1-10
for i=small to big*2
Randomize
sjksh=INT((big-small+1)*RND+small) //取得一个随机数sjksh
Sql = "Select * From xxbmht where bmh = "&sjksh&""
0rs.Open Sql,conn,1,1
kf=rs("kf")
xqbmh=rs("xqbmh")
rs.close //取得这个随机数所在数据库中的使用情况。
if kf=1 then
if xqbmh=0 then
xxbmh=sjksh
Set rsyyg=server.CreateObject("ADODB.recordset")
Sqlyyg = "update xxbmht set kf = 0 , xqbmh='"&bmxh&"' where bmh = "&xxbmh&" "
rsyyg.Open Sqlyyg,conn,3,3
exit for //如果证实没有使用那么写入正式使用的数据库
end if
end if
next //完成循环
这个是1-5的测试数据。
序列号:1
随机考试号:30005
序列号:2
随机考试号:30003
序列号:3
随机考试号:30001
序列号:4
随机考试号:30002
序列号:5
随机考试号:30001
序列号:6
随机考试号:30004
序列号:7
随机考试号:30001
序列号:8
随机考试号:30002
序列号:9
随机考试号:30001
序列号:10
随机考试号:30002