本文主要详细介绍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编程有帮助,也希望你多多支持我们。