唯彩看球

实验|用程序验证彩票购买可行性

昨天发布了全国第48次计算机等级考试成绩,可谓是几家欢喜几家忧。如果只是为了考证而刷题,难免会感觉学习计算机技术的枯燥,如果将学习计算机的过程当成一种娱乐,把计算机当成一个按照你的思想执行操作的一台机器,证书只是娱乐的附带产品,或许你会感觉轻松一些!今天教大家用一段小程序验证彩票购买的可行性。

一、游戏规则

彩票种类很多,这不是我要介绍的重点,至于它的重大作用,也请自行百度。这里我们选取福利彩票中的双色球作为我们模拟的彩种。要用程序模拟它,必须知道它的游戏规则,这里介绍我们需要用到的规则。

(1)号码选取:

双色球投注区分为红色球号码区和蓝色球号码区,红色球号码区由1-33共三十三个号码组成,蓝色球号码区由1-16共十六个号码组成。投注时选择6个红色球号码和1个蓝色球号码组成一注进行单式投注,每注金额人民币2元。

(2)奖项设置:

双色球共分6个等级奖项,其中一、二等奖的奖金根据当期销售情况有变化,三至六等奖设固定金额奖金。为了程序的验证方便,这里将所有等级奖项的奖金都按固定值计算。具体为:

一等奖:所购号码与开奖号完全相同,奖金500万。

二等奖:投注号码与当期开奖号码中的6个红色球号码相同,即中奖,假定奖金25万。

三等奖:投注号码与当期开奖号码中的任意5个红色球号码和1个蓝色球号码相同,奖金固定为3000元。

四等奖:投注号码与当期开奖号码中的任意5个红色球号码相同,或与任意4个红色球号码和1个蓝色球号码相同,奖金固定为200元。

五等奖:投注号码与当期开奖号码中的任意4个红色球号码相同,或与任意3个红色球号码和1个蓝色球号码相同,奖金固定为10元。

六等奖:投注号码与当期开奖号码中的1个蓝色球号码相同,单注奖金固定为5元。

二、设计思路及技术要点

这里选取为经管类学生开设的Visual Foxpro课程为验证的程序设计工具,学习其它计算机语言的同学可以参考,并在各自的特定环境中完成实验。

(1)验证方式

按照很多彩民所谓“守号”方式验证,也即是每期都买同一注彩票,连续买很多期。

(2)彩票号码的获取

彩票号码分为购买号码和开奖号码,购买号码由用户输入,开奖号码由计算机随机产生。为了让用户输入彩票号码,我们新建一个窗体,窗体上放置7个文本框,用于接收所购买的红、蓝彩号。如图所示:

随机产生的彩票由VFP的rand()函数产生。若要产生[a,b]范围内的一个随机整数,可以采用公式:Int((b-a+1)rand()+a)得到,所以产生红球的公式为:int(rand()33+1),产生蓝球的公式为:int(rand()*16+1)。

(3)怎么保证随机红球号码不重复:

开奖号码是随机产生的,当然就有可能前后两次随机产生的号码相同,而购买彩票时,红球号码不能重复选取,程序中怎么保证呢?解决方法就是每产生一个新号码,就与己经具有的号码相比较,如果不同,则存储新号码,否则,放弃本次产生的号码,重新随机生成下一个号码。参考代码如下:

dimension cpRand(8) &&多出的一个元素用于存储中奖金额

cpRand(1)=int(rand()*33+1) &&产生第一个红色球

redBall=1 &&记录己经生成的红球个数

do while redBall<6

tmp=int(rand()*33+1)

for j=1 to redBall

if cpRand(j)=tmp

exit

endif

next

if j>redBall then

redBall=redBall+1

cpRand(redBall)=tmp

endif

enddo

cpRand(7)=int(rand()*16+1)

(4)怎么计算中奖的红球数目

为了程序循环的方便,将购买号码和开奖号码都存入到数组中,然后将购买号码的每一个号与开奖号码所有号做相等比较,若相等,说明该号码选中并记数,否则检查下一个购买号码,当一注彩票的所有号码都检查过之后,则可计算出所中红球数目。参考代码如下:

&&计算红球中奖个数

redNumber=0

for m=1 to 6

for n=1 to 6

if cp(m)=cpRand(n) then

redNumber=redNumber+1

exit

endif

next

next

(5)如何计算中奖金额

根据中奖的红、蓝球数目,用一个多分支语句进行判断,参考代码如下:

cpRand(8)=0 &&计算本次开奖中奖金额

do case

case blueNumber=1 and redNumber=6

cpRand(8)=5000000

case redNumber=6

cpRand(8)=250000

case redNumber=5 and blueNumber=1

cpRand(8)=3000

case redNumber=5 or redNumber=4 and blueNumber=1

cpRand(8)=200

case redNumber=4 or redNumber=3 and blueNumber=1

cpRand(8)=10

case blueNumber=1

cpRand(8)=5

endcase

(6)如何存储模拟结果

为了将每次产生的开奖信息存储起来,可以创建一张表,表中设置8个整型字段,前面6个字段用于存储红球号码,第7个字段用于存储蓝球号码,第8个字段用于存储中奖金额。由于前面计算过程中,将开奖号和中奖金额都存于cpRand数组中了,所以打开表之后,用如下语句将开奖号存于表中:

append blank &&表中添加一个空白记录

gather from cpRand

三、结果

到了验证我今天手气的时候了,运行程序,输入购买的彩票号码、购买次数,点击“计算结果”按钮。

模拟购买5000次,花费1万元,中奖金额2020,哎,还是给你们上课去挣点钱吧。

彩票购买 彩票数据

评论正在加载...