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执行速率优化技巧小结
Mar 15 PHP
PHP开发中常用的8个小技巧
Aug 27 PHP
php 更新数据库中断的解决方法
Jun 05 PHP
PHP 调试工具Debug Tools
Apr 30 PHP
php函数的常用方法及注意之处小结
Jul 10 PHP
php中截取中文字符串的代码小结
Jul 17 PHP
PHP开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等)
Apr 21 PHP
迁移PHP版本到PHP7
Feb 06 PHP
Laravel学习教程之路由模块
Aug 18 PHP
PHP实现负载均衡session共享redis缓存操作示例
Aug 22 PHP
PHP实现时间日期友好显示实现代码
Sep 08 PHP
浅谈thinkphp的nginx配置,以及重写隐藏index.php入口文件方法
Oct 12 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开发者常犯的10个MySQL错误更正剖析
2012/01/30 PHP
CI框架中libraries,helpers,hooks文件夹详细说明
2014/06/10 PHP
PHP MYSQL简易交互式站点开发
2016/12/27 PHP
thinkphp中的多表关联查询的实例详解
2017/10/12 PHP
读取input:file的路径并显示本地图片的方法
2013/09/23 Javascript
jquery中用函数来设置css样式
2016/12/22 Javascript
轻松理解Javascript变量的相关问题
2017/01/20 Javascript
ajax接收后台数据在html页面显示
2017/02/19 Javascript
node.js爬虫爬取拉勾网职位信息
2017/03/14 Javascript
ES6数组的扩展详解
2017/04/25 Javascript
微信小程序中post方法与get方法的封装
2017/09/26 Javascript
jQuery实现动态添加节点与遍历节点功能示例
2017/11/09 jQuery
vue使用keep-alive保持滚动条位置的实现方法
2019/04/09 Javascript
vue解决使用$http获取数据时报错的问题
2019/10/30 Javascript
[49:08]Secret vs VP 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
easy_install python包安装管理工具介绍
2013/02/10 Python
python黑魔法之参数传递
2016/02/12 Python
在Python的Flask中使用WTForms表单框架的基础教程
2016/06/07 Python
Python制作刷网页流量工具
2017/04/23 Python
python中import reload __import__的区别详解
2017/10/16 Python
pyqt5的QWebEngineView 使用模板的方法
2018/08/18 Python
Python 多线程不加锁分块读取文件的方法
2018/12/11 Python
python3 自动识别usb连接状态,即对usb重连的判断方法
2019/07/03 Python
python中用logging实现日志滚动和过期日志删除功能
2019/08/20 Python
python通过安装itchat包实现微信自动回复收到的春节祝福
2020/01/19 Python
python中判断数字是否为质数的实例讲解
2020/12/06 Python
CSS3 border-image详解、应用及jQuery插件
2011/08/29 HTML / CSS
css3 仿写阿里云水纹效果的示例代码
2018/02/10 HTML / CSS
html5使用canvas画空心圆与实心圆
2014/12/15 HTML / CSS
移动HTML5前端框架—MUI的使用
2017/12/18 HTML / CSS
Sneaker Studio法国:购买运动鞋
2018/06/08 全球购物
美国修容界大佬创建的个人美妆品牌:Kevyn Aucoin Beauty
2018/12/12 全球购物
syb养殖创业计划书
2014/01/09 职场文书
2014年远程教育工作总结
2014/12/09 职场文书
2015年小学实验室工作总结
2015/07/28 职场文书
解决golang在import自己的包报错的问题
2021/04/29 Golang