这篇文章主要为大家详细介绍了PHP实现大转盘抽奖算法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文实例为大家分享了PHP实现转盘抽奖算法的具体代码,供大家参考,具体内容如下
流程:
1.拼装奖项数组
2.计算概率
3.返回中奖情况
代码如下:
中奖概率 ' v ' 可以在后台设置,传到此方法中,注意传整数
function get_gift(){
//拼装奖项数组
// 奖项id,奖品,概率
$prize_arr = array(
'0' => array('id'=>1,'prize'=>'平板电脑','v'=>0),
'1' => array('id'=>2,'prize'=>'数码相机','v'=>0),
'2' => array('id'=>3,'prize'=>'音箱设备','v'=>0),
'3' => array('id'=>4,'prize'=>'4G优盘','v'=>5),
'4' => array('id'=>5,'prize'=>'10Q币','v'=>0),
'5' => array('id'=>6,'prize'=>'空奖','v'=>5),
);
foreach ($prize_arr as $key => $val) {
$arr[$val['id']] = $val['v'];//概率数组
}
$rid = $this->get_rand($arr); //根据概率获取奖项id
$res['yes'] = $prize_arr[$rid-1]['prize']; //中奖项
unset($prize_arr[$rid-1]); //将中奖项从数组中剔除,剩下未中奖项
shuffle($prize_arr); //打乱数组顺序
for($i=0;$i<count($prize_arr);$i++){
$pr[] = $prize_arr[$i]['prize']; //未中奖项数组
}
$res['no'] = $pr;
// var_dump($res);
if($res['yes']!='空奖'){
$result['status']=1;
$result['name']=$res['yes'];
}else{
$result['status']=-1;
$result['msg']=$res['yes'];
}
//return $result;
var_dump($result);
}
//计算中奖概率
function get_rand($proArr) {
$result = '';
//概率数组的总概率精度
$proSum = array_sum($proArr);
// var_dump($proSum);
//概率数组循环
foreach ($proArr as $key => $proCur) {
$randNum = mt_rand(1, $proSum); //返回随机整数
if ($randNum <= $proCur) {
$result = $key;
break;
} else {
$proSum -= $proCur;
}
}
unset ($proArr);
return $result;
}
效果图:
想要学习更多关于抽奖功能的实现,请参考此专题:抽奖功能
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程学习网。
沃梦达教程
本文标题为:PHP实现转盘抽奖算法分享


猜你喜欢
- laravel通用化的CURD的实现 2023-03-17
- Laravel balde模板文件中判断数据为空方法 2023-08-30
- php微信公众号开发之秒杀 2022-11-23
- 用nohup命令实现PHP的多进程 2023-09-02
- PHP实现微信支付(jsapi支付)流程步骤详解 2022-10-09
- PHP仿tp实现mvc框架基本设计思路与实现方法分析 2022-10-18
- PHP简单实现二维数组的矩阵转置操作示例 2022-10-02
- PHP中PDO事务处理操作示例 2022-10-15
- windows下9款一键快速搭建PHP本地运行环境的好工具(含php7.0环境) 2023-09-02
- laravel实现按月或天或小时统计mysql数据的方法 2023-02-22