PHP实现转盘抽奖算法分享


Posted in PHP onApril 15, 2020

本文实例为大家分享了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实现转盘抽奖算法分享PHP实现转盘抽奖算法分享

想要学习更多关于抽奖功能的实现,请参考此专题:抽奖功能

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
开发大型 PHP 项目的方法
Jan 02 PHP
dedecms模板标签代码官方参考
Mar 17 PHP
PHP Pear 安装及使用
Mar 19 PHP
PHP设置一边执行一边输出结果的代码
Sep 30 PHP
PHP页面中文乱码分析
Oct 29 PHP
destoon会员注册提示“数据校验失败(2)”解决方法
Jun 21 PHP
php求一个网段开始与结束IP地址的方法
Jul 09 PHP
php简单防盗链实现方法
Jul 29 PHP
PHP7扩展开发教程之Hello World实现方法示例
Aug 03 PHP
源码分析 Laravel 重复执行同一个队列任务的原因
Dec 25 PHP
PHP explode()函数用法讲解
Feb 15 PHP
基于ThinkPHP删除目录及目录文件函数
Oct 28 PHP
PHP cURL获取微信公众号access_token的实例
Apr 28 #PHP
详解php与ethereum客户端交互
Apr 28 #PHP
360搜索引擎自动收录php改写方案
Apr 28 #PHP
PHP使用Curl实现模拟登录及抓取数据功能示例
Apr 27 #PHP
PHP获取文件扩展名的常用方法小结【五种方式】
Apr 27 #PHP
PHP四种排序算法实现及效率分析【冒泡排序,插入排序,选择排序和快速排序】
Apr 27 #PHP
php-fpm服务启动脚本的方法
Apr 27 #PHP
You might like
浅谈php中的访问修饰符private、protected、public的作用范围
2016/11/20 PHP
PHP 网站修改默认访问文件的nginx配置
2017/05/27 PHP
nodejs中exports与module.exports的区别详细介绍
2013/01/14 NodeJs
JS实现随机化快速排序的实例代码
2013/08/01 Javascript
javascript读取Xml文件做一个二级联动菜单示例
2014/03/17 Javascript
javascript随机之洗牌算法深入分析
2014/06/07 Javascript
实例代码详解jquery.slides.js
2015/11/16 Javascript
Bootstrap Table从服务器加载数据进行显示的实现方法
2016/09/29 Javascript
js实现移动端编辑添加地址【模仿京东】
2017/04/28 Javascript
使用Dropzone.js上传的示例代码
2017/10/10 Javascript
快速解决brew安装特定版本flow的问题
2018/05/17 Javascript
基于jQuery使用Ajax动态执行模糊查询功能
2018/07/05 jQuery
使用jQuery给Table动态增加行、清空table的方法
2018/09/05 jQuery
基于javascript实现碰撞检测
2020/03/12 Javascript
Vue使用Element实现增删改查+打包的步骤
2020/11/25 Vue.js
JavaScript实现10秒后再次获取验证码
2020/12/02 Javascript
Pycharm技巧之代码跳转该如何回退
2017/07/16 Python
Python实现动态图解析、合成与倒放
2018/01/18 Python
详解Python核心对象类型字符串
2018/02/11 Python
python实现批量修改图片格式和尺寸
2018/06/07 Python
python监控文件并且发送告警邮件
2018/06/21 Python
Python根据已知邻接矩阵绘制无向图操作示例
2018/06/23 Python
Python最小二乘法矩阵
2019/01/02 Python
python3+PyQt5 实现Rich文本的行编辑方法
2019/06/17 Python
Python爬虫之Selenium实现窗口截图
2020/12/04 Python
python sleep和wait对比总结
2021/02/03 Python
美国班级戒指、帽子和礼服、毕业产品、年鉴:Balfour
2018/11/01 全球购物
ALDO美国官网:加拿大女鞋品牌
2018/12/28 全球购物
小班开学寄语
2014/04/04 职场文书
档案信息化建设方案
2014/05/16 职场文书
安全环保标语
2014/06/09 职场文书
2015领导干部廉洁自律工作总结
2015/07/23 职场文书
大学军训心得体会800字
2016/01/11 职场文书
职场:企业印章管理制度(模板)
2019/10/18 职场文书
浅谈移动端中的视口(viewport)的具体使用
2021/04/13 HTML / CSS
「睡美人」爱洛公主粘土人开订
2022/03/22 日漫