可用的ASP无重复数字随机函数, 数组实现, 并应用于随机显示记录集

时间:2021-12-13 01:29:14

经服务器之家站长测试可用的ASP无重复数字随机函数, 数组实现, 并应用于随机显示记录集
作用: 
本函数适用于随机显示小数量的随机不重复数字 
本函数适用于显示小数量的随机不重复记录集 
为了不影响效率, 上限超过一千, 不建议使用本函数 
shawl.qiu 
2006-09-06 
 http://blog.csdn.net/btbtd 
主内容: 函数及应用函数随机显示100条记录 
linenum  

复制代码代码如下:


<%   
    dim rs, rNum   
    dim temp   
    set rs=createObject("adodb.recordset")   
        rs.open "select top 100 * from rnd_v1",conn,1   
        rNum=rs.recordCount-1   
        for each temp in fRndNoRpt(0,rNum)   
            rs.move temp   
            response.write rs("sbcat")   
            response.write "<br/>"   
            rs.movefirst   
        next   
        rs.close   
    set rs=nothing 'shawl.qiu code'   
    function fRndNoRpt(lwNum,upNum)   
    ''''''''''''''''''''''''''''''''''''''''''''   
    ' ASP 无重复数字随机函数, 数组实现, By shawl.qiu   
    ' 2006-09-06   
    '   http://blog.csdn.net/btbtd   
    '''''''''''''''''''''''''''''''''   
    ' 注意: 随机数超过1000, 不建议使用本函数.   
    '''''''''''''''''''''''''''''''''   
    ' 参数说明:   
    '''''''''''''''''''''''''''''''''   
    ' lwNum 为 数字数组下限, 如: 1   
    ' upNum 为 数字数组上限, 如: 100   
    '''''''''''''''''''''''''''''''''   
    ' sample call:   
    '''''''''''''''''''''''''''''''''   
    '    dim t   
    '    for each t in fRndNoRpt(1,100)   
    '        response.write t&"<br/>"   
    '    next   
    ''''''''''''''''''''''''''''''''''''''''''''   
        if upNum<1 or isNull(upNum) or upNum="" or isNumeric(upNum)=false then exit function   
        if lwNum<0 or isNumeric(lwNum)=false then exit function   
        dim num, temp   
        dim ar()   
        redim ar(upNum)   
        dim j:j=0   
        for temp=lwNum to upNum   
            num=num&"."&temp&"."   
        next   
        randomize       
        do until num=""   
                temp=int((upNum-lwNum+1)*rnd+lwNum)   
            if inStr(num,"."&temp&".")<>0 then    
                num=replace(num,"."&temp&".","")   
                ar(j)=temp   
                j=j+1   
            end if   
        loop   
        fRndNoRpt=ar   
        erase ar   
    end function 'shawl.qiu code'   
    response.write "<p/>使用随机数函数显示1至100的不重复随机数 1:<br/>-----------------------<br/>"   
    for each temp in fRndNoRpt(1,100)   
        response.write temp&"<br/>"   
    next   
    response.write "<p/>使用随机数函数显示1至100的不重复随机数 2:<br/>-----------------------<br/>"   
    temp=join(fRndNoRpt(1,100),"-")   
    response.write mid(temp,1,len(temp)-1)   
%>