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 危险函数全解析
Sep 09 PHP
PHP的preg_match匹配字符串长度问题解决方法
May 03 PHP
PHP计算一年多少个星期和每周的开始和结束日期
Jul 01 PHP
smarty模板引擎中自定义函数的方法
Jan 22 PHP
php根据一个给定范围和步进生成数组的方法
Jun 19 PHP
php无限级分类实现方法分析
Oct 19 PHP
php redis实现文章发布系统(用户投票系统)
Mar 04 PHP
php实现的统计字数函数定义与使用示例
Jul 26 PHP
PHP PDOStatement::nextRowset讲解
Feb 01 PHP
php apache开启跨域模式过程详解
Jul 08 PHP
PHP7生产环境队列Beanstalkd用法详解
May 19 PHP
PHP获取真实IP及IP模拟方法解析
Nov 24 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
Smarty使用自定义资源的方法
2015/08/08 PHP
PHP单元测试配置与使用方法详解
2019/12/27 PHP
Jquery Ajax学习实例7 Ajax所有过程事件分析示例
2010/03/23 Javascript
固定表格行列(expression)在IE下适用
2013/07/25 Javascript
利用js动态添加删除table行的示例代码
2013/12/16 Javascript
Node.js与PHP、Python的字符处理性能对比
2014/07/06 Javascript
javascript记录文本框内文字个数检测文字个数变化
2014/10/14 Javascript
JQuery判断radio是否选中并获取选中值的示例代码
2014/10/17 Javascript
javascript 应用小技巧方法汇总
2015/07/05 Javascript
jQuery实现图像旋转动画效果
2016/05/29 Javascript
BootStrap日期控件在模态框中选择时间下拉菜单无效的原因及解决办法(火狐下不能点击)
2016/08/18 Javascript
微信开发之调起摄像头、本地展示图片、上传下载图片实例
2016/12/08 Javascript
微信小程序使用scroll-view标签实现自动滑动到底部功能的实例代码
2018/11/09 Javascript
小程序云开发实现数据库异步操作同步化
2019/05/18 Javascript
vue实现固定位置显示功能
2019/05/30 Javascript
javascript实现fetch请求返回的统一拦截
2019/12/22 Javascript
Vue+tracking.js 实现前端人脸检测功能
2020/04/16 Javascript
Python中的测试模块unittest和doctest的使用教程
2015/04/14 Python
Python中with及contextlib的用法详解
2017/06/08 Python
python 中的divmod数字处理函数浅析
2017/10/17 Python
python 信息同时输出到控制台与文件的实例讲解
2018/05/11 Python
python argparser的具体使用
2019/11/10 Python
TensorFlow 读取CSV数据的实例
2020/02/05 Python
Python ini文件常用操作方法解析
2020/04/26 Python
html+css3实现的登录界面
2020/12/09 HTML / CSS
Hotels.com加拿大:领先的在线住宿网站
2018/10/05 全球购物
L’Artisan Parfumeur官网:法国香水品牌
2020/08/11 全球购物
体育专业个人求职信范文
2013/12/27 职场文书
软件项目实施计划书
2014/05/02 职场文书
房地产资料员岗位职责
2014/07/02 职场文书
会计学专业求职信
2014/07/17 职场文书
党性心得体会
2014/09/03 职场文书
构建和谐校园倡议书
2015/01/19 职场文书
高中生打架检讨书1000字
2015/02/17 职场文书
惹女朋友生气检讨书
2015/05/06 职场文书
2019财务毕业实习报告
2019/06/27 职场文书