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 大数据量及海量数据处理算法总结
May 07 PHP
PHP里的中文变量说明
Jul 23 PHP
将博客园(cnblogs.com)数据导入到wordpress的代码
Jan 06 PHP
比较简单的百度网盘文件直链PHP代码
Mar 24 PHP
php中filter_input函数用法分析
Nov 15 PHP
Thinkphp模板标签if和eq的区别和比较实例分析
Jul 01 PHP
浅谈php错误提示及查错方法
Jul 14 PHP
详解PHP的Laravel框架中Eloquent对象关系映射使用
Feb 26 PHP
PHP Echo字符串的连接格式
Mar 07 PHP
PHP通过加锁实现并发情况下抢码功能
Aug 10 PHP
php fread读取文件注意事项
Sep 24 PHP
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
Dec 14 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实现小型站点广告管理
2006/10/09 PHP
那些年一起学习的PHP(三)
2012/03/22 PHP
Yii Framework框架使用PHPExcel组件的方法示例
2019/07/24 PHP
Laravel框架中队列和工作(Queues、Jobs)操作实例详解
2020/04/06 PHP
Yii使用EasyWechat实现小程序获取用户的openID的方法
2020/04/29 PHP
PHP开发API接口签名生成及验证操作示例
2020/05/27 PHP
javascript:void(0)的作用示例介绍
2013/10/28 Javascript
angularjs的一些优化小技巧
2014/12/06 Javascript
JavaScript获取当前网页标题(title)的方法
2015/04/03 Javascript
javascript实现漂亮的拖动层,窗口拖拽特效
2015/04/24 Javascript
jquery组件WebUploader文件上传用法详解
2020/10/23 Javascript
jQuery Validate 数组 全部验证问题
2017/01/12 Javascript
JS使用Date对象实时显示当前系统时间简单示例
2018/08/23 Javascript
AngularJS实现的自定义过滤器简单示例
2019/02/02 Javascript
如何在JavaScript中谨慎使用代码注释
2019/06/21 Javascript
Python中线程的MQ消息队列实现以及消息队列的优点解析
2016/06/29 Python
Python实现基于TCP UDP协议的IPv4 IPv6模式客户端和服务端功能示例
2018/03/22 Python
关于python之字典的嵌套,递归调用方法
2019/01/21 Python
python爬虫之快速对js内容进行破解
2019/07/09 Python
python实现连连看辅助之图像识别延伸
2019/07/17 Python
Pytorch Tensor的索引与切片例子
2019/08/18 Python
flask项目集成swagger的方法
2020/12/09 Python
CSS3 中的@keyframes介绍
2014/09/02 HTML / CSS
几个解决兼容IE6\7\8不支持html5标签的几个方法
2013/01/07 HTML / CSS
韩国CJ食品专卖网:CJonmart
2016/09/11 全球购物
全球领先的全景影像品牌:Insta360
2019/08/21 全球购物
人力资源主管岗位职责
2014/01/29 职场文书
入党积极分子自我鉴定
2014/02/18 职场文书
绿色城市实施方案
2014/03/19 职场文书
农民工工资发放承诺书
2014/03/31 职场文书
酒店爱岗敬业演讲稿
2014/09/02 职场文书
企业法人授权委托书范本
2014/09/23 职场文书
房屋出租协议书范本(标准版)
2014/09/24 职场文书
2014国庆节演讲稿:祖国在我心中(400字)
2014/09/25 职场文书
材料采购员岗位职责
2015/04/03 职场文书
一文搞懂MySQL索引页结构
2022/02/28 MySQL