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新手上路(九)
Oct 09 PHP
PHP HTML代码串截取代码
Dec 29 PHP
PHP strtok()函数的优点分析
Mar 02 PHP
PHP数据类型之布尔型的介绍
Apr 28 PHP
Drupal7 form表单二次开发要点与实例
Mar 02 PHP
PHP中通过fopen()函数访问远程文件示例
Nov 18 PHP
php文件扩展名判断及获取文件扩展名的N种方法
Sep 12 PHP
PHP下SSL加密解密、验证、签名方法(很简单)
Jun 28 PHP
PHP排序算法之堆排序(Heap Sort)实例详解
Apr 21 PHP
thinkPHP利用ajax异步上传图片并显示、删除的示例
Sep 26 PHP
PHP whois查询类定义与用法示例
Apr 03 PHP
PHP命名空间用法实例分析
Sep 04 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
yii实现创建验证码实例解析
2014/07/31 PHP
php删除一个路径下的所有文件夹和文件的方法
2018/02/07 PHP
javascript onmouseout 解决办法
2010/07/17 Javascript
js隐藏与显示回到顶部按钮及window.onscroll事件应用
2013/01/25 Javascript
jQuery获得页面元素的绝对/相对位置即绝对X,Y坐标
2014/03/06 Javascript
使用CamanJS在Web页面上处理图像的技巧
2015/08/18 Javascript
JavaScript setTimeout使用闭包功能实现定时打印数值
2015/12/18 Javascript
快速使用Bootstrap搭建传送带
2016/05/06 Javascript
Javascript基础学习笔记(菜鸟必看篇)
2016/07/22 Javascript
AngularJS基础 ng-init 指令简单示例
2016/08/02 Javascript
AngularJs $parse、$eval和$observe、$watch详解
2016/09/21 Javascript
jQuery中ajax错误调试分析
2016/12/01 Javascript
微信小程序  checkbox组件详解及简单实例
2017/01/10 Javascript
jQuery使用unlock.js插件实现滑动解锁
2017/04/04 jQuery
深入浅出webpack之externals的使用
2017/12/04 Javascript
AngularJS中的作用域实例分析
2018/05/16 Javascript
vue 登录滑动验证实现代码
2018/08/24 Javascript
详解axios中封装使用、拦截特定请求、判断所有请求加载完毕)
2019/04/09 Javascript
vuex 中插件的编写案例解析
2019/06/10 Javascript
利用Python的Flask框架来构建一个简单的数字商品支付解决方案
2015/03/31 Python
Python操作MongoDB数据库PyMongo库使用方法
2015/04/27 Python
Python设计模式之工厂模式简单示例
2018/01/09 Python
用Python识别人脸,人种等各种信息
2019/07/15 Python
详解PyTorch中Tensor的高阶操作
2019/08/18 Python
Python namedtuple命名元组实现过程解析
2020/01/08 Python
python学习将数据写入文件并保存方法
2020/06/07 Python
记一次Django响应超慢的解决过程
2020/09/17 Python
css3实现背景模糊的三种方式(小结)
2020/05/15 HTML / CSS
提供世界各地便宜的机票:Sky-tours
2016/07/21 全球购物
英国图书音像网站:Hive.co.uk(图书、电子书、DVD、蓝光、音乐CD等)
2017/10/16 全球购物
村容村貌整治方案
2014/05/21 职场文书
2014个人反腐倡廉思想汇报
2014/09/15 职场文书
个人授权委托书范本格式
2014/10/12 职场文书
证劵公司反洗钱宣传活动总结
2015/05/08 职场文书
小学生心理健康活动总结
2015/05/08 职场文书
IDEA2021.2配置docker如何将springboot项目打成镜像一键发布部署
2021/09/25 Java/Android