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 相关文章推荐
基于qmail的完整WEBMAIL解决方案安装详解
Oct 09 PHP
php ob_flush,flush在ie中缓冲无效的解决方法
May 09 PHP
PHP 函数学习简单小结
Jul 08 PHP
从零开始学YII2框架(一)通过Composer安装Yii2框架
Aug 20 PHP
PHP数组操作――获取数组最后一个值的方法
Apr 14 PHP
解决php表单重复提交实现方法
Sep 29 PHP
PHP 在数组中搜索给定的简单实例 array_search 函数
Jun 13 PHP
PHP实现重载的常用方法实例详解
Oct 18 PHP
PHP大文件切割上传并带进度条功能示例
Jul 01 PHP
对laravel的session获取与存取方法详解
Oct 08 PHP
php设计模式之抽象工厂模式分析【星际争霸游戏案例】
Jan 23 PHP
PHP的垃圾回收机制代码实例讲解
Feb 27 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
建立动态的WML站点(三)
2006/10/09 PHP
PHP json格式和js json格式 js跨域调用实现代码
2012/09/08 PHP
php根据分类合并数组的方法实例详解
2013/11/06 PHP
PHP数据库操作Helper类完整实例
2016/05/11 PHP
jquery 操作单选框,复选框,下拉列表实现代码
2009/10/27 Javascript
ExtJS判断IE浏览器类型的方法
2014/02/10 Javascript
jQuery插件zoom实现图片全屏放大弹出层特效
2015/04/15 Javascript
Bootstrap登陆注册页面开发教程
2016/07/12 Javascript
jQuery插件HighCharts实现的2D回归直线散点效果示例【附demo源码下载】
2017/03/09 Javascript
vuejs2.0子组件改变父组件的数据实例
2017/05/10 Javascript
JS实现的全排列组合算法示例
2017/10/09 Javascript
vue学习教程之带你一步步详细解析vue-cli
2017/12/26 Javascript
vue 实现的树形菜的实例代码
2018/03/19 Javascript
在vue项目中引用Iview的方法
2018/09/14 Javascript
用npm-run实现自动化任务的方法示例
2019/01/14 Javascript
python字符串排序方法
2014/08/29 Python
python魔法方法-自定义序列详解
2016/07/21 Python
python队列queue模块详解
2018/04/27 Python
django框架之cookie/session的使用示例(小结)
2018/10/15 Python
python基于C/S模式实现聊天室功能
2019/01/09 Python
OpenCV图像颜色反转算法详解
2019/05/13 Python
python3.6编写的单元测试示例
2019/08/17 Python
Python字典深浅拷贝与循环方式方法详解
2020/02/09 Python
Python面向对象程序设计之私有变量,私有方法原理与用法分析
2020/03/23 Python
Python 如何测试文件是否存在
2020/07/31 Python
Flask缓存静态文件的具体方法
2020/08/02 Python
基于python实现简单C/S模式代码实例
2020/09/14 Python
CSS3制作缩略图的详细过程
2016/07/08 HTML / CSS
html5版canvas自由拼图实例
2014/10/15 HTML / CSS
施工人员岗位职责
2013/12/12 职场文书
2014老师三严三实对照检查材料思想汇报
2014/09/18 职场文书
社保代办委托书怎么写
2014/10/06 职场文书
新郎新娘答谢词
2015/01/04 职场文书
2015年度质量工作总结报告
2015/04/27 职场文书
z-index不起作用
2021/03/31 HTML / CSS
Python获取百度热搜的完整代码
2021/04/07 Python