首页  ·  知识 ·  编程语言
取指定范围的随机数
80  http://www.waasai.com/blog/f/80/  ASP  编辑:dezai  图片来源:网络
oblog_text> 取指定范围和个数的随机数,无重复,结果为一字符串,用split函数即可取得各值 <"BORDER-RIGHT: #cccc
 

取指定范围和个数的随机数,无重复,结果为一字符串,用split函数即可取得各值

指定5个参数:
iLessCount----取最少n个数(Integer)
iMostCount----取最多n个数(Integer)
iLessNumber----取数最小范围(Integer)
iMostNumber----取数最大范围(Integer)
cutZero----是否要剔除无效零(Boolean)[例:true-->3,false-->003]
测试:
Response.Write rndNumber(1,3,5,15,false)
Function rndNumber(iLessCount,iMostCount,iLessNumber,iMostNumber,cutZero)
If iLessCount = 0 OR iMostCount < iLessCount OR NOT _
isnumeric(iLessCount) OR NOT isnumeric(iMostCount) OR NOT _
isnumeric(iLessNumber) OR NOT isnumeric(iMostNumber) _
OR (iLessNumber = iMostNumber) Then Exit Function
'最少个数零、最大个数小于最小个数、4个参数不为数字、最小数等于最大数就退出函数
Randomize

Dim iRnd,sZero
Dim sOutput
Dim iLength
Dim sTempOutput
Dim i
Dim iCount

iCount = int(rnd*(iMostCount-iLessCount+1))+iLessCount'计算随机取几个数

iLength = len(iMostNumber)*iCount+(iCount*2)
'长度为最大数长度乘以随机个数加上随机个数乘以2(前后各一逗号,以全字匹配)

Do While len(sOutput) < iLength'输出小于长度时循环
iRnd = int(rnd*(iMostNumber-iLessNumber+1))+iLessNumber'取随机数
If Len(iRnd) < len(iMostNumber) Then'随机数长度小于取最大数长度
For i = 1 To len(iMostNumber) - len(iRnd)'那么就要在首位加缺少的零
sZero = sZero & "0"
Next
End If
iRnd = sZero & iRnd'把零加在随机数前面
sZero = empty'清空首位零,循环后还要调用

If Instr(sOutput,","&iRnd&",") < 1 Then'不在输出变量中就放进去0
sOutput = sOutput & "," & iRnd & ","
End If
Loop

sOutput = mid(sOutput,2,len(sOutput)-2)'去掉首尾逗号
sOutput = Replace(sOutput,",,",",")'把双逗号替换成单逗号

If cutZero = true Then'如果要去除首位多余的零
sTempOutput = split(sOutput,",")'拆分为数组
sOutput = empty'清空,后面要重新放入
For i = 0 To Ubound(sTempOutput)'逐个转换成数值后放入
sOutput = sOutput & Clng(sTempOutput(i)) & ","
Next
sOutput = mid(sOutput,1,len(sOutput)-1)'去掉末尾逗号
End If

rndNumber = sOutput'输出
End Function
本文作者:80 来源:http://www.waasai.com/blog/f/80/
CIO之家 www.ciozj.com 微信公众号:imciow
    >>频道首页  >>网站首页   纠错  >>投诉
版权声明:CIO之家尊重行业规范,每篇文章都注明有明确的作者和来源;CIO之家的原创文章,请转载时务必注明文章作者和来源;
延伸阅读