介绍
使用PHP怎么编写一个转盘抽奖算法?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
<>强流程:强>
1。拼装奖项数组
2。计算概率
3。返回中奖情况
代码如下:
中奖概率& # 39;v & # 39;可以在后台设置,传到此方法中,<强>注意强>传整数
function get_gift () {,//拼才能装奖项数组,//才能,奖项id,奖品,概率 时间=美元才能prize_arr 阵列(, ,才能& # 39;0 & # 39;,=祝辞,数组(& # 39;id # 39;=祝辞1 & # 39;奖# 39;=祝辞& # 39;平板电脑& # 39;,& # 39;v # 39;=祝辞0),, ,,& # 39;1 & # 39;,=祝辞,数组(& # 39;id # 39;=祝辞;2,& # 39;奖# 39;=祝辞& # 39;数码相机& # 39;,& # 39;v # 39;=祝辞0),, ,才能& # 39;2 & # 39;,=祝辞,数组(& # 39;id # 39;=祝辞;3,& # 39;奖# 39;=祝辞& # 39;音箱设备& # 39;,& # 39;v # 39;=祝辞0),, ,才能& # 39;3 & # 39;,=祝辞,数组(& # 39;id # 39;=祝辞;4,& # 39;奖# 39;=祝辞& # 39;4 g优盘& # 39;,& # 39;v # 39;=祝辞;5),, ,才能& # 39;4 & # 39;,=祝辞,数组(& # 39;id # 39;=在5日& # 39;奖# 39;=祝辞& # 39;10 q币& # 39;,& # 39;v # 39;=祝辞0),, ,,& # 39;5 & # 39;,=祝辞,数组(& # 39;id # 39;=在6日& # 39;奖# 39;=祝辞& # 39;空奖& # 39;,& # 39;v # 39;=祝辞;5),, ,,); foreach 才能;(prize_arr 美元;as key 美元;=祝辞,val美元),{, ,,arr美元(美元val [& # 39; id # 39;]],=, val美元[& # 39;v # 39;];//概率数组, ,,},=美元才能rid $ this→get_rand (arr);,//根据概率获取奖项id 美元才能res(& # 39;是的# 39;],=,prize_arr美元($ rid-1][& # 39;奖# 39;];,//中奖项, 设置才能($ prize_arr [$ rid-1]);,//将中奖项从数组中剔除,剩下未中奖项, 洗牌才能($ prize_arr);,//打乱数组顺序, ,,(i=0; i<美元;count ($ prize_arr);美元我+ +){, ,,公关[],美元=,prize_arr美元[$ i][& # 39;奖# 39;];,//未中奖项数组, ,,}, 美元才能res(& # 39;没有# 39;],=,公关;美元,//才能,var_dump (res); ,, 如果才能(res美元[& # 39;是的# 39;]!=& # 39;空奖& # 39;){, 美元,,结果[& # 39;状态# 39;]=1;, 美元,,结果[& # 39;名字# 39;]=$ res(& # 39;是的,),, 其他,}{大敌; 美元,,结果[& # 39;状态# 39;]=1;, 美元,,结果[& # 39;味精# 39;]=$ res(& # 39;是的,),, ,,},//才能return 结果;美元, var_dump()美元才能; }大敌; ,//计算中奖概率 ,function get_rand (proArr美元),{, 时间=美元才能result & # 39; & # 39;,,//才能概率数组的总概率精度, 时间=美元才能proSum 函数($ proArr);,//才能,var_dump ($ proSum);//才能概率数组循环, foreach 才能;(proArr 美元;as key 美元;=祝辞,proCur美元),{, 时间=美元才能randNum mt_rand (1, proSum美元);,//返回随机整数, if 才能;(randNum 美元;& lt;=, proCur美元),{, ,才能result 美元;=,关键;美元, ,,,休息; ,,},else {, ,,proSum 美元;-=,proCur美元;, ,,}, ,,}, unset 才能;(proArr美元),, return 才能;结果;美元, 以前,}>效果图:
使用PHP怎么编写一个转盘抽奖算法