微信公众号 
图码生活

每天发布有五花八门的文章,各种有趣的知识等,期待您的订阅与参与
电脑报 1992-2001 十年文章全集
电脑报 1992-2001 十年文章全集
包含从 1992 年 - 2001 年间,两万余篇期刊文章,查询最少输入两个字符
随便看看
读取中
读取中
标题使用Rand( )函数随机选取记录
栏目软件世界
作者袁志新
发布1999年第26期13版
  在数据库管理软件中,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条记录全选。