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中strtotime函数使用方法分享
Jan 10 PHP
php多文件上传功能实现原理及代码
Apr 18 PHP
PHP怎么实现网站保存快捷方式方便用户随时浏览
Aug 15 PHP
php颜色转换函数hex-rgb(将十六进制格式转成十进制格式)
Sep 23 PHP
PHP中的reflection反射机制测试例子
Aug 05 PHP
php ImageMagick windows下安装教程
Jan 26 PHP
PHP与jquery实时显示网站在线人数实例详解
Dec 02 PHP
php中Redis的应用--消息传递
Mar 28 PHP
php-fpm超时时间设置request_terminate_timeout资源问题分析
Sep 27 PHP
Laravel 使用查询构造器配合原生sql语句查询的例子
Oct 12 PHP
Laravel validate error处理,ajax,json示例
Oct 25 PHP
PHP配合fiddler抓包抓取微信指数小程序数据的实现方法分析
Jan 02 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
支持生僻字且自动识别utf-8编码的php汉字转拼音类
2014/06/27 PHP
解析WordPress中函数钩子hook的作用及基本用法
2015/12/22 PHP
Yii2 输出xml格式数据的方法
2016/05/03 PHP
PHP实现的简单分页类及用法示例
2016/05/06 PHP
jquery 使用点滴函数代码
2011/05/20 Javascript
javascript通过navigator.userAgent识别各种浏览器
2013/10/25 Javascript
java、javascript实现附件下载示例
2014/08/14 Javascript
JavaScript实现在页面间传值的方法
2015/04/07 Javascript
Bootstrap每天必学之导航条(二)
2016/03/01 Javascript
浅谈jQuery before和insertBefore的区别
2016/12/04 Javascript
JSON对象转化为字符串详解
2017/08/11 Javascript
通过fastclick源码分析彻底解决tap“点透”
2017/12/24 Javascript
javascript匿名函数中的'return function()'作用
2018/10/15 Javascript
微信小程序全局变量的设置、使用、修改过程解析
2019/09/24 Javascript
vue中@change兼容问题详解
2019/10/25 Javascript
原生javascript中this几种常见用法总结
2020/02/24 Javascript
Nuxt的路由配置和参数传递方式
2020/11/06 Javascript
python使用递归解决全排列数字示例
2014/02/11 Python
Python过滤函数filter()使用自定义函数过滤序列实例
2014/08/26 Python
python中黄金分割法实现方法
2015/05/06 Python
python数据类型_元组、字典常用操作方法(介绍)
2017/05/30 Python
使用Python 统计高频字数的方法
2019/01/31 Python
关于windows下Tensorflow和pytorch安装教程
2020/02/04 Python
python中scrapy处理项目数据的实例分析
2020/11/22 Python
完美解决Pycharm中matplotlib画图中文乱码问题
2021/01/11 Python
Opencv 图片的OCR识别的实战示例
2021/03/02 Python
简述索引存取方法的作用和建立索引的原则
2013/03/26 面试题
.NET初级开发工程师面试题(包括Javascript)
2012/08/22 面试题
小区文明倡议书
2014/05/16 职场文书
教师党员承诺书2015
2015/01/21 职场文书
工程款催款函
2015/06/24 职场文书
详解Python小数据池和代码块缓存机制
2021/04/07 Python
pytorch 中nn.Dropout的使用说明
2021/05/20 Python
浅谈Redis主从复制以及主从复制原理
2021/05/29 Redis
Python答题卡识别并给出分数的实现代码
2021/06/22 Python
浅谈Redis 中的过期删除策略和内存淘汰机制
2022/04/03 Redis