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_xmlhttp 乱码问题解决方法
Aug 07 PHP
php面向对象全攻略 (九)访问类型
Sep 30 PHP
Linux下将excel数据导入到mssql数据库中的方法
Feb 08 PHP
php 获取select下拉列表框的值
May 08 PHP
php下用cookie统计用户访问网页次数的代码
May 09 PHP
php获取远程图片体积大小的实例
Nov 12 PHP
js基于qrcode.js生成二维码的方法【附demo插件源码下载】
Dec 28 PHP
php实现数据库的增删改查
Feb 26 PHP
利用PHP实现开心消消乐的算法示例
Oct 12 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
Dec 21 PHP
实例讲解php将字符串输出到HTML
Jan 27 PHP
vmware linux系统安装最新的php7图解
Apr 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学习笔记 数组遍历实现代码
2011/06/09 PHP
提高php运行速度的一些小技巧分享
2012/07/03 PHP
PHP 如何利用phpexcel导入数据库
2013/08/24 PHP
gearman中任务的优先级和返回状态实例分析
2020/02/27 PHP
避免 showModalDialog 弹出新窗体的原因分析
2010/05/31 Javascript
页面图片浮动左右滑动效果的简单实现案例
2014/02/10 Javascript
js中的getAttribute方法使用示例
2014/08/01 Javascript
JS实现的网页背景闪电闪烁效果代码
2015/10/17 Javascript
jquery动态增加删减表格行特效
2015/11/20 Javascript
Javascript中的数组常用方法解析
2016/06/17 Javascript
AngularJs Understanding the Model Component
2016/09/02 Javascript
angularjs使用directive实现分页组件的示例
2017/02/07 Javascript
解决layer弹层遮罩挡住窗体的问题
2018/08/17 Javascript
ElementUI Tag组件实现多标签生成的方法示例
2019/07/08 Javascript
javascript自定义日期比较函数用法示例
2019/07/22 Javascript
vue中js判断长时间不操作界面自动退出登录(推荐)
2020/01/22 Javascript
开发Node CLI构建微信小程序脚手架的示例
2020/03/27 Javascript
vue-quill-editor插入图片路径太长问题解决方法
2021/01/08 Vue.js
python爬虫系列Selenium定向爬取虎扑篮球图片详解
2017/11/15 Python
python实现两张图片的像素融合
2019/02/23 Python
对pyqt5之menu和action的使用详解
2019/06/20 Python
解决Django连接db遇到的问题
2019/08/29 Python
如何在sublime编辑器中安装python
2020/05/20 Python
Python如何转换字符串大小写
2020/06/04 Python
Python 实现键盘鼠标按键模拟
2020/11/18 Python
python中Pexpect的工作流程实例讲解
2021/03/02 Python
实习护理工作自我评价
2013/09/25 职场文书
生日宴会答谢词
2014/01/09 职场文书
给校长的一封建议书
2014/03/12 职场文书
党员四风问题个人对照检查材料
2014/10/26 职场文书
2015年教师学期工作总结
2015/04/30 职场文书
鲁滨逊漂流记读书笔记
2015/06/26 职场文书
幼儿教师师德培训心得体会
2016/01/09 职场文书
2019幼儿园感恩节活动策划书
2019/11/28 职场文书
Python内置数据结构列表与元组示例详解
2021/08/04 Python
在Docker容器中部署SQL Server
2022/04/11 Servers