本文主要详细介绍php的中奖概率算法,可用于刮刮卡、大转盘等彩票算法。本文中的示例代码非常详细,具有一定的参考价值。感兴趣的朋友可以参考一下。
本文分享php中奖概率算法,可用于刮刮卡、大转盘等彩票算法。用法很简单,代码里有详细的注释供你参考。具体内容如下
?服务器端编程语言(Professional Hypertext Preprocessor的缩写)
/*
*经典概率算法,
* $proArr是预设数组,
*假设数组为:array(100,200,300),
*开头是筛选第一个数字是否在11000的概率范围内,
*如果不是,从刚才那个数的概率空间中减去概率空间,也就是k的值,
*在本例中,它是负100,这意味着在1,900的范围内过滤第二个数字。
*这样,最后总会有一个符合要求的数字。
*相当于摸盒子里的东西,
*第一个不是,第二个不是,第三个还不是,那么最后一个一定是。
*该算法简单且非常高效,
*该算法在数据量大的项目中非常高效。
*/
函数get_rand($proArr) {
$ result=“”;
//概率数组的总概率精度
$ proSum=array _ sum($ proArr);
//概率数组循环
foreach($ proArr as $ key=$ proCur){
$randNum=mt_rand(1,$ proSum);
if ($randNum=$proCur) {
$ result=$ key
打破;
}否则{
$ proSum-=$ proCur;
}
}
unset($ proArr);
返回$ result
}
/*
*奖励阵列
*是一个二维数组,记录了本次彩票的所有中奖信息,
*其中id代表中奖等级,prize代表奖金,V代表中奖概率。
*注意,v必须是整数。你可以把对应奖品的v设置为0,也就是说中奖几率为0。
*数组中V的和(基数)。基数越大,概率就越精确。
*本例中,V之和为100,那么平板电脑对应的中奖概率为1%。
*如果V的和是一万,中奖概率是万分之一。
*
*/
$prize_arr=array(
0'=array('id'=1,' prize'=' tablet ',' v'=1),
1'=数组(' id'=2,' prize'='数码相机',' v'=5),
2'=数组(' id'=3,' prize'='扬声器设备',' v'=10),
3'=array('id'=4,' prize '=' 4G盘',' v'=12),
4'=数组(' id'=5,' prize'='10Q币',' v'=22),
5'=array('id'=6,' prize'='也许下次你能赢',' v'=50),
);
/*
*每次首页请求,PHP循环奖励设置数组,
*获取概率计算函数get_rand抽取的奖品id。
*将获胜的奖品保存在数组$res中['yes'],
*其余关于获胜的信息保存在$res['no']中,
*最后,将json号数据输出到前端页面。
*/
foreach($ prize _ arr as $ key=$ val){
$ arr[$ val[' id ']]=$ val[' v '];
}
$ rid=get _ rand($ arr);//根据概率获取获奖id
$ RES[' yes ']=$ prize _ arr[$ rid-1][' prize '];//中奖
unset($ prize _ arr[$ rid-1]);//从数组中移除中奖,留下中奖。
shuffle($ prize _ arr);//打乱数组顺序
for($ I=0;$ icount($ prize _ arr);$i ){
$ pr[]=$ prize _ arr[$ I][' prize '];
}
$ RES[' no ']=$ pr;
print _ r($ RES);
?
详细了解彩票功能的实现,请参考本主题:彩票功能。
以上是php彩票概率算法的全部内容。希望对你学习php编程有帮助,也希望你多多支持我们。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。