新客网WWW.XKER.COM:致力做中国最专业的网络学院!
学院: 操作系统 - 网络应用 - 服务器 - 网络安全 - 工具软件 - 办公软件 - Web开发 - 数据库 - 网页设计 - 图形图像 - 媒体动画 - 硬件学堂 - 存储频道 - QQ专区
您的位置:首页 > 软件开发 > Web开发 > Asp教程 > 正文:随机生成不重复记录的伪函数

随机生成不重复记录的伪函数

新客网 XKER.COM 2004-05-10 来源: 收藏本文
原理:利用一个临时数组保存好随机范围的数据(简称范围数据)索引或标识,用rnd随机生成临时数组的索引。验证临时数组索引所对应的数据,为空则视被记录过了,将随机数加一后重复验证操作直到临时数组索引对应的数据不为空,则由一个记录变量记录下对应的范围数据标识,并清空此项数据。然后进行下一个随机操作。

伪函数:

'####
'## 函数参数
'##   范围数据数组:   一维数组。
'##   随机选择的数据量: 整数。
function MyRnd(范围数据数组,随机选择的数据量)
'################################################################
  dim 范围数据数组维数
  dim 循环标识
  dim 随机索引
  dim 随机结果
  范围数据数组维数=ubound(范围数据数组)
  循环标识=true
  
  if 范围数据数组维数>随机选择的数据量 then
  '如果 随机选择的数据量 大于 范围数据数组维数 的话就不用随机读取了,全布都列出来就是了
    Randomize Timer
    随机索引=fix(rnd*(范围数据数组维数+1))
    while 循环标识
      if 范围数据数组(随机索引 mod 范围数据数组)<>"" then
      '数据不为空,则表示未随机选取过。
       随机索引=范围数据数组(随机索引 mod 范围数据数组)
        if 随机结果="" then
        '随机结果 以","分隔每个随机值。
          随机结果=随机结果 &; ","
        end if
        随机结果=随机结果 &; 范围数据数组(随机索引)
        范围数据数组(随机索引)=""  '清空该数据表示已随机过。
        循环标识=false '结束循环。
      end if
      if 随机索引>范围数据数组维数*3 then
      '如果 随机索引 大于 范围数据数组维数的三倍,表示已经在 范围数据数组维数 内历遍过三次,跳出,防止死循环。
        循环标识=false
      end if
    wend
  end if
end function

应用:
  用在随机选取不重复的数据表记录。
    用getrows将数据表内ID标识换成一个二维数组,然后使用该函数随机选取指定数量的ID编号以","分隔,然后用in条件式将符合随机出来的ID编号的数据读出来即可。
  随机选取不重复的数据。
    将所有数据放到一个一维数据,然后用该函数挑随机挑选即可。

收藏】 【评论】 【推荐】 【投稿】 【打印】 【关闭
发表评论
要记得去论坛讨论,点击注册新会员匿名评论
评论内容:不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
阅读排行
随机推荐
实用信息推荐