电脑报 广告Logo
目录 综合报道 软件世界 硬件周刊 大众网络 OA专刊 游戏广场 评测与市场
当前位置:电脑报电子版 > 1999 年 > 26 期 > 软件世界 > 使用Rand()函数随机选取记录

《 使用Rand()函数随机选取记录 》

  在数据库管理软件中,VFP较以往的DBASE增加了许多函数,Rand()便是其中之一,这为我们处理一些随机问题带来了极大方便。随机函数Rand()的格式功能如下:
  格式:Rand(x)
  其中参数x为种子数值,它决定了函数返回的数值序列,可省略。
  功能:产生一个(0,1)区间的随机数。
  说明:使用Rand()时,若参数是负数,则将使用系统时钟的种子值,若要获得不重复的随机数序列,可以先使用负数作为参数,然后再使用不带参数的Rand()。本人在搞题库设计时,有这样一个问题:在含有n个记录的题库中,随机先取m条记录作为试题,其中n>=m>1,在抽取试题时,必须保证试题不重复。其方法是:利用Rand()将库中的n个记录号随机先取m个记录号放于数组B中,且保证选取的记录号不能相同,为此,编写一个如下的小程序段:
  :&&统计库中记录个数n
  :&&确定选取的记录个数m
  Dime b(m)
  B(1)=int(n*Rand(-1)+1) &&保证产生的随机数为整数并且在[1,n]区间内
  i=2
  do while i<=m
  t=1 &&为检验产生的记录号是否重复的标志
  a=int(n*Rand()+1)
  j=1
  do while j<=i-1 &&检验新产生的记录号是否与前i-1个记录号重复
  if a=b(j)
  t=-1
  exit
  else
  j=j+1
  endif
  enddo
  if t=-1 &&若重复,重新产生
  loop
  else
  B(i)=a &&不重复,第i个记录号产生
  i=i+1
  enddo
  通过以上程序段,即可保证试题的随机选取,并且编程者本身事先也不知道选择哪m条记录,除非n条记录全选。
(山东 袁志新)
下载本期推荐软件页 首

  《电脑报》版权所有,电脑报网站编辑部设计制作发布