PHP实现转盘抽奖算法分享

 更新时间:2020年04月15日 15:32:46   作者:下页、再停留  
这篇文章主要为大家详细介绍了PHP实现大转盘抽奖算法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了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 SMS短信服务验证码发送方法

    阿里云PHP SMS短信服务验证码发送方法

    这篇文章主要介绍了阿里云PHP SMS短信服务验证码发送方法,需要的朋友可以参考下
    2017-07-07
  • 微信推送功能实现方式图文详解

    微信推送功能实现方式图文详解

    这篇文章主要介绍了微信推送功能实现方式,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-07-07
  • php 数组处理函数extract详解及实例代码

    php 数组处理函数extract详解及实例代码

    php extract 函数使用数组键名作为变量名,使用数组键值作为变量值, 本函数可以处理表单提交并插入数据库。文章向大家讲解extract函数的基本使用方法及实例,需要的朋友可以参考下
    2016-11-11
  • DEDE实现转跳属性文档在模板上调用出转跳地址

    DEDE实现转跳属性文档在模板上调用出转跳地址

    这篇文章主要介绍了DEDE实现转跳属性文档在模板上调用出转跳地址,有需要的朋友可以参考一下。
    2016-11-11
  • 浅谈PHP array_search 和 in_array 函数效率问题

    浅谈PHP array_search 和 in_array 函数效率问题

    这篇文章主要介绍了浅谈PHP array_search 和 in_array 函数效率问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • php读取和保存base64编码的图片内容

    php读取和保存base64编码的图片内容

    这篇文章主要为大家详细介绍了php读取和保存base64编码的图片内容,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • PHP面试常用算法(推荐)

    PHP面试常用算法(推荐)

    下面小编就为大家带来一篇PHP面试常用算法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-07-07
  • Yii 2.0实现联表查询加搜索分页的方法示例

    Yii 2.0实现联表查询加搜索分页的方法示例

    这篇文章主要给大家介绍了关于利用Yii 2.0实现联表查询加搜索分页的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来跟着小编一起学习学习吧。
    2017-08-08
  • Yii2 rbac权限控制之菜单menu实例教程

    Yii2 rbac权限控制之菜单menu实例教程

    这篇文章主要介绍了Yii2 rbac权限控制之菜单menu实例教程的相关资料,需要的朋友可以参考下
    2016-04-04
  • PHP保存带BOM文件的方法

    PHP保存带BOM文件的方法

    这篇文章主要介绍了PHP保存带BOM文件的方法,本文相当简短,因为方法也很简单,不需要过多描述,需要的朋友可以参考下
    2015-02-02

最新评论