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

王朝other·作者佚名  2006-11-24
宽屏版  字体: |||超大  

原理:利用一个临时数组保存好随机范围的数据(简称范围数据)索引或标识,用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编号的数据读出来即可。

随机选取不重复的数据。

将所有数据放到一个一维数据,然后用该函数挑随机挑选即可。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有