微信公众号 
图码生活

每天发布有五花八门的文章,各种有趣的知识等,期待您的订阅与参与
电脑报 1992-2001 十年文章全集
电脑报 1992-2001 十年文章全集
包含从 1992 年 - 2001 年间,两万余篇期刊文章,查询最少输入两个字符
随便看看
读取中
读取中
标题Visual FoxPro 3.0中自编随机数函数
栏目软件大世界
作者闫东
发布1997-01-01
  在测试程序、模拟程序中,常常要使用随机数,这就需要有一个产生随机数的函数。但在Visual FoxPro 3.0中却没有类似的函数,这无疑给编程带来很大的困难。为解决这一问题笔者自编了一个用于Visual FoxPro 3.0的随机函数──RND()。
  为得到随机数,首先要有一个快速变化的数据源,笔者想到了Windows 95的API函数TimeGetTime,此函数返回Windows 95启动开始已逝去的毫秒数,其值以毫秒级发生变化,这个条件显然是满足的;其次,要求随机数的每一位数的变化都要很快,至少是前几位数的变化要快,但用TimeGetTime得到的随机数正好相反(最后一位以毫秒级变化,前几位却几秒甚至几十秒才变化一次),于是笔者以使用Visual FoxPro 3.0的STR()和LEFT()函数将TimeGetTime的返回值调个头,如此一来便可以满足随机数的要求了。
  程序设计中使用FoxTools.FLL库中的RegFn()函数和CallFn()函数来调用TimeGetTime函数。下面的一段程序可产生100个1到100之间的随机数:
  Set Talk Off
  For I=1 To 100
  ?Int(Rnd()*100)+1
  EndFor
  Function RND
  Set Decimals To 8
  Set Library To C:\VFP\FOXTOOLS.FLL
  SysTime=Regfn("TimeGetTime","","I","MMSYSTEM")
  Ss=Callfn(SysTime)
  RndS=Val("0."+Right(Str(Abs(Ss)),1)+
  Left(Right(Str(Abs(Ss)),2),1)+
  Left(Right(Str(Abs(Ss)),3),1)+
  Left(Right(Str(Abs(Ss)),4),1)+
  Left(Right(Str(Abs(Ss)),5),1))
  Return(Rnds)
  以上程序在Windows 95和Visual FoxPro 3.0中运行通过。