摇奖机的程序设计原理

摇奖机的程序设计原理,第1张

摇奖机原理很简单,摇奖机就是一个号码磁识别系统,和超市里的磁识别原理是一样的。摇奖机就宏瞎一个识别器而已,开奖号码是由控制摇奖机的电脑产生的,开什么奖号是由电脑 *** 作者给电脑发出指令,电脑再给摇篮奖机发出指令,把产生的开奖号码球识别出来。开奖号码就这样诞生了。

开奖号码是怎样产生的呢?可以肯定,开奖号码是由装在电脑里的摇奖系统软件产生的。大概分三种情况。

第一情况:电脑 *** 作者控制返奖比例,开奖前运行摇奖系统软件,给电脑发出指令,设定返奖比例范围,封机后电脑自动统计奖票销售况,在返奖比例范围彩票内,由软件的随机桐绝庆函数随机产生开奖号码。电脑再给摇奖发出指令,摇奖机把带奖号的号码球摇出来。具体开出什么号码,电脑 *** 作者不知道。

第二种情况:电脑里装的摇奖系统软件里有N种开奖方案,每一种方案是一个随机函数,产生的组3、组6、奇偶、和值、跨度、全顺、半顺等各种形态比例是不同的。开奖前,电脑 *** 作者运行摇奖软件,给摇奖机发出按何种方案开奖,摇奖软件按这种方案随机产生局握开奖号码,再给摇奖机发出指令,摇奖机把带奖号的号码球摇出来。具体开出什么号码,电脑 *** 作者不知道。何种方案开什么号码、有什么特点,电脑 *** 作者不知道。这只有摇奖机生产厂家的软件设计人员知道。这里有一点是清楚的,时间长了以后,何种方案有什么特点, *** 作电脑的人他一定有所了解。例如,他采用A方案开奖一段时间,用B方案开奖一段时间,通过观察比较,这两方案在号码形态上有什么特点,他就一目了然了。

第三种情况:就是用上述两种情况,混合交替使用。

/***************************************

设计一个体育彩票的投彩和开奖过程

体彩的中奖等级分为特等奖(7位数字全部吻合),一等奖(6个连续的数字吻合),

二等奖(5个连续的数字吻合)、三等奖(4个连续的数字吻合)和安慰奖(2个连续的数字吻合),

设立奖励规则,各个等级的奖激猜庆金金额自定。

为了避免输入的麻烦,我明握把你的各个等级的奖金金额及模拟参数都存在里,

并把模拟结果存在Output.txt文件里。

Set.set文件的书写规则如下:

第一行为模拟参数,第一个数为模拟的次数,第二、第三个数为号码的最小

值和最大值,第四个数为是否显示投注和开奖的过程(0表示否,1表示是),每个数用空格隔开。

第二行为各奖项的奖金数额,每个数用空格隔开。

如:

1000000 1 9 1

1000000 500000 5000 100 5

注意Set.set文件必须用英文半角输入法编辑,并保存为ANSI编码方式。

****************************************/

#include <iostream>

#include <fstream>

#include <stdlib.h>

#include <time.h>

using namespace std

class Lottery

{

private:

int simuCount//模拟的次数

int nCodes //号码的总数

int minCode //最小的号码

int maxCode //最大的号码

int countCode//每个号码的选择个数

bool bDisplay//是否显示过程

double awards[6] //各奖项的奖金数额

public:

//初始化各参数

void InitLottery()

{

int i

fstream fileSet

fileSet.open("Set.set",ios_base::in)

if(fileSet.is_open())

{

fileSet>>simuCount>>minCode>>maxCode>>bDisplay

awards[5]=0.0 //设五等奖为不中奖

for(i=0i<5i++)

{

fileSet>>awards[i]

cout<<i<<"等奖:"<<awards[i]<<"\t"

}

}

else

{

cout<<"Set.set不存在,将以默认参数进行模拟\n"

simuCount=1000000

minCode=1maxCode=9

bDisplay=true

awards[0]=100000

awards[1]=50000

awards[2]=5000

awards[3]=100

awards[4]=5

awards[5]=0

}

fileSet.close()

cout<<"兆轿模拟次数:"<<simuCount<<"\n"

cout<<"最小号码:"<<minCode<<" 最大号码:"<<maxCode<<"\n"

cout<<"显示过程:"<<bDisplay<<"\n"

cout<<"各奖项的奖金数额:\n"

for(i=0i<5i++)

{

cout<<i<<"等奖:"<<awards[i]<<"\t"

}

srand(time(0))

}

//随机生成7个不重复号码

void GenerateCodes(int code[])

{

int n,i,j

int m = maxCode - minCode

code[0] = rand() % m + minCode

for(i=1i<7i++)

{

n = rand() % m + minCode

for(j=0j<ij++)

{

if(n==code[j])

{

n = rand() % m + minCode

j=-1

}

}

code[i]=n

}

}

//比较号码并判断中了几等奖

int CompareCodes(int rightCode[],int myCode[])

{

int i,j,n

n=0

for(i=0i<7i++)

{

for(j=0j<7j++)

{

if(myCode[i]==rightCode[j])

{

n++

}

}

}

switch(n)

{

case 7:

return 0 //特等奖(7位数字全部吻合)

case 6:

return 1 //一等奖(6个连续的数字吻合)

case 5:

return 2 //二等奖(5个连续的数字吻合)

case 4:

return 3 //三等奖(4个连续的数字吻合)

case 3:

case 2:

return 4 //安慰奖(2个以上连续的数字吻合)

default:

return 5 //其余不中奖

}

return 5

}

//进行模拟

void Simulate()

{

double prop[6]

int np[6]

int right_code[7]

int my_code[7]

int c,l,i

for(c=0c<6c++)

{

np[c]=0

}

//开始模拟

for(c=0c<simuCountc++)

{

GenerateCodes(my_code)

GenerateCodes(right_code)

l=CompareCodes(right_code,my_code)

if(l>=0 &&l<6)

{

np[l]++

}

if(bDisplay)

{

cout<<"投注号码:"

for(i=0i<6i++)

{

cout<<my_code[i]<<", "

}

cout<<"开奖号码:"

for(i=0i<6i++)

{

cout<<right_code[i]<<", "

}

cout<<"您中了 "<<l<<" 等奖\n"

}

}

//统计结果

fstream fileOut

fileOut.open("Output.txt",ios_base::out)

cout<<"模拟结果:\n"

fileOut<<"模拟结果:\n"

for(c=0c<6c++)

{

prop[c] = 1.0* np[c] / simuCount

cout<<c<<" 等奖的中奖概率:"<<prop[c]*100<<"%\n"

fileOut<<c<<" 等奖的中奖概率:"<<prop[c]*100<<"%\n"

}

fileOut.close()

}

}

main()

{

cout<<"体育彩票的投彩和开奖过程模拟\n"

Lottery lot

lot.InitLottery()

lot.Simulate()

}

将就看下吧

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>Document</title>

</head>

<body>

<button id="buySelef">买一张(自选)</button>

<button id="buyRandom">买一张(机选)</button>

<button id="result">买一张(开奖)</button>

<div id='resultList'>

<span>结果</span>

</div>

</body>

</html>

<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>

<script>

window.Prize={LotteryResults:0 }

$("#buySelef").click(function(){

var num = Math.floor(Math.random() * (300 - 100) ) + 100

$("#resultList").append('<p>自选结果:'+num+'<p>')

})

$("#buyRandom").click(function(){

var num = Math.floor(Math.random() * (300 - 100) ) + 100

$("#resultList").append('<p>禅升机选结果:'+num+'<p>')

})

$("#result").click(function(){

if(window.Prize.LotteryResults<=0)

{

var num = Math.floor(Math.random() * (300 - 100) ) + 100

window.Prize.LotteryResults=num

}

else{

var num = window.Prize.LotteryResults

}

$("#result").append('<p>开奖结果:'+num+'逗派<p>山袭贺')

})

</script>


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12481817.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存