专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > VFP

关于随机抽奖的有关问题

发布时间:2010-05-24 22:04:11 文章来源:www.iduyao.cn 采编人员:星星草
关于随机抽奖的问题
我设计了一个现场抽奖的程序,想实现一次随机抽取5人或者10人或15人的名单。目前我实现了通过点击N次按钮实现抽取的人数,但领导要我设计出一个只要按一次按钮,就能随机抽出5人的这种情况,请教各位大侠,这种情况在表单中如何显示有多行记录在滚动的情况,还有用什么公式才能实现一次抽5人、10人、15人。

------解决方案--------------------
你不是已经写出来随机抽取一个的了么

重复执行你的抽取过程就可以啊

然后判断一下随机出来的结果是不是已经抽取出来了

如果抽取出来了就重新执行抽取过程

即 同一个人不能重复被抽取
------解决方案--------------------
重复执行你取1个的代码。



SQL code
Rand(-1)

Create Cursor t1 (原表字段 i)
For lni=1 To 50
    Insert Into t1 Values (lni)
Endfor
Locate
Browse && 生成的原始测试

Select Top 5 1000*Rand()+1 As 随机数,* From t1 Order By 1 && 随机取5条记录

*-- 至于滚动显示,也是随机取一条显示一条,再取一条再显示一条。
*-- 但当按停止时,一定要再随机一下,不然看到什么一停就是这个了。

------解决方案--------------------
sele * from tt into cursor mytt
sele top 5 * from mytt order by rand() into mytt5
dele from tt where 姓名 in (sele 姓名 from mytt5)
------解决方案--------------------
这个抽奖程序我写过两个,包含答卷采集和评分

thisform.text1.value=''
thisform.check1.enabled=.f.
thisform.combo1.enabled=.f.
=rand(-1)
IF thisform.check1.value
thisform.command1.enabled=.f.
do while setjx.cjs>setjx.zjs
se=int((round(rand(),6)*thisform.keys))+1
sele cj
go se
SCAT to mj fiel xm,sfzh,dh,dwmc
Dele
PACK
thisform.keys=thisform.keys-1
SELE zj
LOCA for jx==setjx.jx
DO while !empt(sfzh)
Skip
ENDD
GATH from mj fiel xm,sfzh,dh,dwmc
REPL zjs with zjs+1 in setjx


thisform.grid1.refresh


endd
sele zj
go top
thisform.grid1.refresh
thisform.grid1.refresh
thisform.check1.enabled=.t.
thisform.combo1.enabled=.t.
thisform.command1.enabled=setjx.cjs>setjx.zjs
* thisform.command1.enabled=.t.

ELSE
IF this.caption='开始抽奖'
this.caption='中奖'

thisform.timer1.enabled=.t.


ELSE

thisform.timer1.enabled=.f.
this.caption='开始抽奖'
lockscreen=.t.
SELE cj
SCAT to mj fiel xm,sfzh,dh,dwmc
Dele
PACK
thisform.keys=thisform.keys-1
SELE zj
LOCA for jx==setjx.jx
DO while !empt(sfzh)
Skip
ENDD
GATH from mj fiel xm,sfzh,dh,dwmc
REPL zjs with zjs+1 in setjx
lockscreen=.f.
thisform.grid1.refresh
thisform.check1.enabled=.t.
thisform.combo1.enabled=.t.
thisform.command1.enabled=setjx.cjs>setjx.zjs
ENDI
ENDI

------解决方案--------------------
用循环。

思路是这样的:设置某个奖项的名额,选择一个奖项,按“开始抽奖”,系统随机抽出相应数目的名单。

你想一次抽五个,就设某个奖项名额是5。
你可能会说:我要三等奖30个,每次抽五个。分次循环就行
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: