php 抽奖算法,php转盘抽奖源码

php 抽奖算法,php转盘抽奖源码,php抽奖概率算法(刮刮卡,大转盘)

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

php 抽奖算法,php转盘抽奖源码