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 相关文章推荐
模仿OSO的论坛(二)
Oct 09 PHP
一个用于网络的工具函数库
Oct 09 PHP
PHP 魔术函数使用说明
May 14 PHP
PHP管理内存函数 memory_get_usage()使用介绍
Sep 23 PHP
基于PHP对XML的操作详解
Jun 07 PHP
PHP自动生成后台导航网址的最佳方法
Aug 27 PHP
一个经典的PHP验证码类分享
Nov 18 PHP
php支付宝接口用法分析
Jan 04 PHP
php遍历目录方法小结
Mar 10 PHP
PHP简单实现断点续传下载的方法
Sep 25 PHP
php实现的微信红包算法分析(非官方)
Sep 25 PHP
redis+php实现微博(二)发布与关注功能详解
Sep 23 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
1亿条数据如何分表100张到Mysql数据库中(PHP)
2015/07/29 PHP
Smarty简单生成表单元素的方法示例
2016/05/23 PHP
yii2.0框架使用 beforeAction 防非法登陆的方法分析
2019/09/11 PHP
php文件上传原理与实现方法详解
2019/12/20 PHP
幻宇的层模拟窗口效果-提供演示和下载
2007/01/20 Javascript
浅谈tudou土豆网首页图片延迟加载的效果
2010/06/23 Javascript
jQuery EasyUI API 中文文档 - ComboGrid 组合表格
2011/10/13 Javascript
jquery等待效果示例
2014/05/01 Javascript
node.js中的url.parse方法使用说明
2014/12/10 Javascript
JavaScript转换二进制编码为ASCII码的方法
2015/04/16 Javascript
Javascript中setTimeOut和setInterval的定时器用法
2015/06/12 Javascript
JQuery自适应窗口大小导航菜单附源码下载
2015/09/01 Javascript
javascript下拉列表中显示树形菜单的实现方法
2015/11/17 Javascript
ES6新数据结构Set与WeakSet用法分析
2017/03/31 Javascript
javascript 判断用户有没有操作页面
2017/10/17 Javascript
原生JS封装_new函数实现new关键字的功能
2018/08/12 Javascript
jQuery轮播图实例详解
2018/08/15 jQuery
layui中的switch开关实现方法
2019/09/03 Javascript
Vue 解决多级动态面包屑导航的问题
2019/11/04 Javascript
解决vue与node模版引擎的渲染标记{{}}(双花括号)冲突问题
2020/09/11 Javascript
nuxt 每个页面head标签内容设置方式
2020/11/05 Javascript
[13:16]INFAMOUS vs VGJ T BO3
2018/06/07 DOTA
PyQt4实现下拉菜单可供选择并打印出来
2018/04/20 Python
pywinauto自动化操作记事本
2019/08/26 Python
Pytorch 实现sobel算子的卷积操作详解
2020/01/10 Python
通过python连接Linux命令行代码实例
2020/02/18 Python
Python定义一个函数的方法
2020/06/15 Python
Pytho爬虫中Requests设置请求头Headers的方法
2020/09/22 Python
香港艺人陈冠希创办的潮流品牌:JUICESTORE
2021/03/04 全球购物
精彩广告词大全
2014/03/19 职场文书
电工技术比武方案
2014/05/11 职场文书
2014年纪检监察工作总结
2014/11/11 职场文书
荒岛余生观后感
2015/06/09 职场文书
MySQL CHAR和VARCHAR该如何选择
2021/05/31 MySQL
MySQL 常见的数据表设计误区汇总
2021/06/07 MySQL
python获取对象信息的实例详解
2021/07/07 Python