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中HTTP方式下的Gzip压缩传输方法举偶
Feb 15 PHP
Base64在线编码解码实现代码 演示与下载
Jan 08 PHP
PHP中的按位与和按位或操作示例
Jan 27 PHP
从零开始学YII2框架(四)扩展插件yii2-kartikgii
Aug 20 PHP
PHP实现将HTML5中Canvas图像保存到服务器的方法
Nov 28 PHP
php实现改变图片直接打开为下载的方法
Apr 14 PHP
php结合正则获取字符串中数字
Jun 19 PHP
php session的应用详细介绍
Mar 22 PHP
thinkphp3.2实现在线留言提交验证码功能
Jul 19 PHP
PHP Class SoapClient not found解决方法
Jan 20 PHP
PHP设计模式之模板方法模式实例浅析
Dec 20 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
Feb 15 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
3款值得推荐的微信开发开源框架
2014/10/28 PHP
thinkphp的静态缓存用法分析
2014/11/29 PHP
MacOS 安装 PHP的图片裁剪扩展Tclip
2015/03/25 PHP
PHP模板引擎smarty详细介绍
2015/05/26 PHP
PHP 9 大缓存技术总结
2015/09/17 PHP
csdn 博客中实现运行代码功能实现
2009/08/29 Javascript
SinaEditor使用方法详解
2013/12/28 Javascript
PHPExcel中的一些常用方法汇总
2015/01/23 Javascript
javascript实现根据时间段显示问候语的方法
2015/06/18 Javascript
JS实现统计复选框选中个数并提示确定与取消的方法
2015/07/01 Javascript
node.js实现端口转发
2016/04/14 Javascript
完美解决js传递参数中加号和&amp;号自动改变的方法
2016/10/11 Javascript
node.js缺少mysql模块运行报错的解决方法
2016/11/13 Javascript
JS数字千分位格式化实现方法总结
2016/12/16 Javascript
使用jquery给新生的th绑定hover事件的实例
2017/02/10 Javascript
angularJS开发注意事项
2018/05/26 Javascript
Node.js 使用axios读写influxDB的方法示例
2018/10/26 Javascript
微信小程序的tab选项卡的实现效果
2019/05/15 Javascript
[01:07:17]EG vs Optic Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
python获取文件扩展名的方法
2015/07/06 Python
Pandas中Series和DataFrame的索引实现
2019/06/27 Python
在python中用url_for构造URL的方法
2019/07/25 Python
Python图像处理模块ndimage用法实例分析
2019/09/05 Python
python读取tif图片时保留其16bit的编码格式实例
2020/01/13 Python
Windows10+anacond+GPU+pytorch安装详细过程
2020/03/24 Python
土木工程毕业生推荐信
2013/10/28 职场文书
精彩的英文自荐信
2014/01/30 职场文书
总经理文秘岗位职责
2014/02/03 职场文书
青年文明号创建承诺
2014/03/31 职场文书
先进基层党组织事迹材料
2014/12/25 职场文书
六年级语文下册教学计划
2015/01/22 职场文书
家长会欢迎词
2015/01/23 职场文书
2015年生活老师工作总结
2015/05/27 职场文书
信用卡工资证明范本
2015/06/19 职场文书
扩展多台相同的Web服务器
2021/04/01 Servers
Mysql分析设计表主键为何不用uuid
2022/03/31 MySQL