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边学边教》(02.Apache+PHP环境配置――下篇)
Dec 13 PHP
php 输出双引号&quot;与单引号'的方法
May 09 PHP
PHP设计模式之观察者模式(Observer)详细介绍和代码实例
Apr 08 PHP
smarty内置函数capture用法分析
Jan 22 PHP
php实现文本数据导入SQL SERVER
May 17 PHP
php使用ob_flush不能每隔一秒输出原理分析
Jun 02 PHP
Zend Framework框架之Zend_Mail实现发送Email邮件验证功能及解决标题乱码的方法
Mar 21 PHP
php实现base64图片上传方式实例代码
Feb 22 PHP
PHP cookie与session会话基本用法实例分析
Nov 18 PHP
laravel框架中控制器的创建和使用方法分析
Nov 23 PHP
浅谈PHP之ThinkPHP框架使用详解
Jul 21 PHP
Laravel 自动转换长整型雪花 ID 为字符串的实现
Oct 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
使用php 获取时间今天明天昨天时间戳的详解
2013/06/20 PHP
php对数组排序代码分享
2014/02/24 PHP
使用ltrace工具跟踪PHP库函数调用的方法
2016/04/25 PHP
通过实例解析PHP数据类型转换方法
2020/07/11 PHP
我也种棵OO树JXTree[js+css+xml]
2007/04/02 Javascript
js限制文本框输入长度两种限制方式(长度、字节数)
2012/12/19 Javascript
用jquery中插件dialog实现弹框效果实例代码
2013/11/15 Javascript
jquery实现在页面加载的时自动为日期插件添加当前日期
2014/08/20 Javascript
在Node.js应用中读写Redis数据库的简单方法
2015/06/30 Javascript
JavaScript获取表格(table)当前行的值、删除行、增加行
2015/07/03 Javascript
详细总结Javascript中的焦点管理
2016/09/17 Javascript
分享ES6的7个实用技巧
2018/01/18 Javascript
ES6中定义类和对象的方法示例
2019/07/31 Javascript
Node.js学习教程之Module模块
2019/09/03 Javascript
vuex存取值和映射函数使用说明
2020/07/24 Javascript
vue Treeselect 树形下拉框:获取选中节点的ids和lables操作
2020/08/15 Javascript
[02:36]DOTA2混沌骑士 英雄基础教程
2013/11/26 DOTA
跟老齐学Python之有容乃大的list(3)
2014/09/15 Python
Python转换HTML到Text纯文本的方法
2015/01/15 Python
浅谈Python处理PDF的方法
2017/11/10 Python
django项目搭建与Session使用详解
2018/10/10 Python
Python之inspect模块实现获取加载模块路径的方法
2018/10/16 Python
Mac安装python3的方法步骤
2019/08/09 Python
Pytorch中的variable, tensor与numpy相互转化的方法
2019/10/10 Python
python编程进阶之异常处理用法实例分析
2020/02/21 Python
浅谈Selenium 控制浏览器的常用方法
2020/12/04 Python
python中K-means算法基础知识点
2021/01/25 Python
New Balance天猫官方旗舰店:始于1906年,百年慢跑品牌
2017/11/15 全球购物
澳大利亚波西米亚风连衣裙在线商店:Fortunate One
2019/04/01 全球购物
大学生创业计划书的格式要求
2013/12/29 职场文书
《自然之道》教学反思
2014/02/11 职场文书
库房管理员岗位职责
2014/03/09 职场文书
党的群众路线整改落实情况汇报
2014/10/28 职场文书
我们的节日元宵节活动总结
2015/02/06 职场文书
为什么阅读对所有年龄段的孩子都很重要?
2019/07/08 职场文书
vue实现水波涟漪效果的点击反馈指令
2021/05/31 Vue.js