Database 版 (精华区)
发信人: mengy (LEAR DLLS 命令时,将从内存中清除), 信区: Database
标 题: VFP随机函数与随机化算法应用实例
发信站: 哈工大紫丁香 (2000年12月30日18:49:25 星期六), 转信
随机函数与随机化算法应用实例
-----“大风车”幸运电话号码的产生
摘要:本文讨论了随机函数与随机算法在抽奖过程中的具体应用,使用vfp6.0写出
了关键的部分控件与事件代码。本文提供的方法不但在抽奖过程中使用,而且也可
以在动态规划中应用。比如,使用随机数判断素数等。
应用背景
中央电视台的儿童节目“大风车”,是深受广大儿童和家长喜爱的电视节目,“大
风车”热线电话,更是儿童积极参加的栏目,每周幸运电话号码的产生是这一栏目
的高潮。那么幸运电话号码是怎样产生的呢?这实际上是一个随机数产生与应用的
问题。
解决方案
使用系统软件提供的随机函数,在确定随机数的范围中寻找一个随机数,利用这个
随机数与所有参与栏目的电话记录相关联。即可确定一个幸运号码。
vfp6.0的实现过程
创建一数据表 telephone.dbf
两个字段
telecode c 20 &&存放电话号码
flag l 1 &&幸运电话号码的标志
建立表单,增加控件 大风车.scx
表单包括三个标签、一个文本框、两个按钮控件。其属性设置分别是:
label1.caption=“电话号码”
label1.fontsize=18
label1.forecolor =0,0,0 &&黑色
label2.caption=“幸运号码”
label2.fontsize=18
label2.forecolor =0,0,0 &&黑色
label3.caption=’’ &&显示幸运号码
label3.fontsize=18
label3.forecolor =255,0,0 &&红色
thisform.text1.value=telephone.telecode
thisform.text1.fontsize=18
command1.caption=”开始”
command1.fontsize=15
command2.caption=”结束”
command1.fontsize=15
设置控件事件代码
在命令按钮1的click事件的代码如下
set dele on
do while .t.
count to acount &&确定参加抽奖的范围,已成为幸
&&运的电话号码不再参与抽奖
jj=mod(int(rand()*1000),acount+1) && 使用随机函数
&&确定随机数的范围
if jj=0
jj=1
endif
go jj
thisform.text1.value=telecode &&随机显示电话号码
&&不按数据库的顺序显示
a=inkey('hm') &&监测键盘或鼠标
if a<>0
repl flag with .t.
thisform.label3.caption=alltrim(telecode)
dele
exit
endif
thisform.label3.caption=''
thisform.refresh
enddo
在命令按钮2的click事件的代码如下
thisform.release &&撤销本表单
完善程序
本文只给出了随机数产生的关键部分。有兴趣的读者可进一步完善,比如电话号码
库的维护;幸运电话号码的输出等操作。
转载自CPCW程序方舟 作者:胡振山 郭施毅
返回首页
--
大海无边天做岸
山登绝顶我为风
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.227.121]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.019毫秒