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 相关文章推荐
实现分十页分向前十页向后十页的处理
Oct 09 PHP
PHP中防止直接访问或查看或下载config.php文件的方法
Jul 07 PHP
基于php常用正则表达式的整理汇总
Jun 08 PHP
对淘宝URL中ID提取的PHP代码
Sep 01 PHP
PHP中常用的转义函数
Feb 28 PHP
php最简单的删除目录与文件实现方法
Nov 28 PHP
PHP简单实现生成txt文件到指定目录的方法
Apr 25 PHP
Yii2中SqlDataProvider用法示例
Sep 22 PHP
详解PHP中的 input属性(隐藏 只读 限制)
Aug 14 PHP
Yii框架中使用PHPExcel的方法分析
Jul 25 PHP
thinkphp 5框架实现登陆,登出及session登陆状态检测功能示例
Oct 10 PHP
php实现记事本案例
Oct 20 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面向对象——访问修饰符介绍
2012/11/08 PHP
php的memcache类分享(memcache队列)
2014/03/26 PHP
PHP中addslashes与mysql_escape_string的区别分析
2016/04/25 PHP
PHP加密技术的简单实现
2016/09/04 PHP
Laravel框架中自定义模板指令总结
2017/12/17 PHP
查询绑定数据岛的表格中的文本并修改显示方式的js代码
2009/12/15 Javascript
Javascript 实现的数独解题算法网页实例
2013/10/15 Javascript
jquery增加时编辑jqGrid(实例代码)
2013/11/08 Javascript
javascript获取URL参数与参数值的示例代码
2013/12/20 Javascript
jquery.post用法之type设置问题
2014/02/24 Javascript
Document.location.href和.replace的区别示例介绍
2014/03/04 Javascript
jquery动态分页效果堪比时光网
2014/09/25 Javascript
JavaScript Base64 作为文件上传的实例代码解析
2017/02/14 Javascript
Vue应用部署到服务器的正确方式
2017/07/15 Javascript
VueJs组件之父子通讯的方式
2018/05/06 Javascript
微信小程序上传图片功能(附后端代码)
2020/06/19 Javascript
jQuery实现table表格checkbox全选的方法分析
2018/07/04 jQuery
Vue中Axios从远程/后台读取数据
2019/01/21 Javascript
vue图片加载失败时用默认图片替换的方法
2019/08/29 Javascript
[02:15]2015国际邀请赛选手档案IG.Ferrari 430
2015/07/30 DOTA
python中的多线程实例教程
2014/08/27 Python
Python 爬虫模拟登陆知乎
2016/09/23 Python
Python获取CPU、内存使用率以及网络使用状态代码
2018/02/08 Python
Django实现一对多表模型的跨表查询方法
2018/12/18 Python
Python read函数按字节(字符)读取文件的实现
2019/07/03 Python
Python协程 yield与协程greenlet简单用法示例
2019/11/22 Python
Python StringIO及BytesIO包使用方法解析
2020/06/15 Python
Python绘图之二维图与三维图详解
2020/08/04 Python
网络维护中文求职信
2014/01/03 职场文书
保护动物倡议书
2014/04/15 职场文书
主题实践活动总结
2014/05/08 职场文书
党性心得体会
2014/09/03 职场文书
防溺水安全教育主题班会
2015/08/12 职场文书
Html5大屏数据可视化开发的实现
2021/06/11 HTML / CSS
JavaScript中时间格式化新思路toLocaleString()
2021/11/07 Javascript
Win11怎么把合并的任务栏分开 Win11任务栏合并分开教程
2022/04/06 数码科技