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编写的抽奖程序中奖概率算法
  • php解决抢购秒杀抽奖等大流量并发入库导致的库存负数的问题
  • php实现可以设置中奖概率的抽奖程序代码分享
  • 适用于抽奖程序、随机广告的PHP概率算法实例
  • PHP转盘抽奖接口实例
  • php抽奖小程序的实现代码
  • php抽奖概率算法(刮刮卡,大转盘)
  • php实现概率性随机抽奖代码
  • 基于PHP实现简单的随机抽奖小程序
  • jQuery+PHP实现的掷色子抽奖游戏实例
(0)

相关推荐

  • php实现可以设置中奖概率的抽奖程序代码分享

    <?php /** * 抽奖 * @param int $total */ function getReward($total=1000) { $win1 = floor((0.12*$total)/100); $win2 = floor((3*$total)/100); $win3 = floor((12*$total)/100); $other = $total-$win1-$win2-$win3; $return = array(); for ($i=0;$i<$win1;$i++) {

  • php解决抢购秒杀抽奖等大流量并发入库导致的库存负数的问题

    我们知道数据库处理sql是一条条处理的,假设购买商品的流程是这样的: sql1:查询商品库存 if(库存数量 > 0) { //生成订单... sql2:库存-1 } 当没有并发时,上面的流程看起来是如此完美,假设同时两个人下单,而库存只有1个了,在sql1阶段两个人查询到的库存都是>0的,于是最终都执行了sql2,库存最后变为-1,超售了,要么补库存,要么等用户投诉吧. 解决这个问题比较流行的思路: 1.用额外的单进程处理一个队列,下单请求放到队列里,一个个处理,就不会有并发的问题了,但是要

  • jQuery+PHP实现的掷色子抽奖游戏实例

    本文实例讲述了jQuery+PHP实现的掷色子抽奖游戏详细步骤.分享给大家供大家参考.具体分析如下: 该游戏是以大富翁游戏为背景,综合运用jQuery和PHP知识,设计出以掷色子点数来达成抽奖的效果,当然抽奖概率是可控的,开发者可以将本实例稍作修改即可运用到网站中的抽奖活动场景中.效果图如下: 完整实例代码点击此处本站下载. HTML部分: 首先我们需要准备两粒色子和奖品素材,这些作者已经打包上传了,请大家放心下载.我们将在html页面中写下如下的html结构代码,.wrap用来放置色子和提示信

  • php抽奖小程序的实现代码

    这个抽奖小程序,在实际的测试环境中也可以用到,比方说测试数据的查询在in条件下,要查询随机的5个id,然后在用ab去压测 复制代码 代码如下: <?php  /**   * "抽奖"函数   *   * @param integer $first    起始编号   * @param integer $last     结束编号   * @param integer $total    获奖人数   *   * @return string   *  */  function i

  • php抽奖概率算法(刮刮卡,大转盘)

    本文实例为大家分享了php中奖概率算法,可用于刮刮卡,大转盘等抽奖算法,用法很简单,代码里有详细注释说明,供大家参考,具体内容如下 <?php /* * 经典的概率算法, * $proArr是一个预先设置的数组, * 假设数组为:array(100,200,300,400), * 开始是从1,1000 这个概率范围内筛选第一个数是否在他的出现概率范围之内, * 如果不在,则将概率空间,也就是k的值减去刚刚的那个数字的概率空间, * 在本例当中就是减去100,也就是说第二个数是在1,900这个范围

  • PHP转盘抽奖接口实例

    本文实例讲述了PHP转盘抽奖接口的实现方法.分享给大家供大家参考.具体如下: 这里的转盘抽奖随机返回一个转盘角度,概率可自己定义 lottery_get.php接口文件如下: 复制代码 代码如下: <?php  /*session_start(); if(!isset($_SESSION['zaszh_user_id'])){     echo json_encode(array('status'=>'error','msg'=>'连接超时,请重新打开页面.'));     exit;

  • php编写的抽奖程序中奖概率算法

    们先完成后台PHP的流程,PHP的主要工作是负责配置奖项及对应的中奖概率,当前端页面点击翻动某个方块时会想后台PHP发送ajax请求,那么后台PHP根据配置的概率,通过概率算法给出中奖结果,同时将未中奖的奖项信息一并以JSON数据格式发送给前端页面. 先来看概率计算函数 function get_rand($proArr) { $result = ''; //概率数组的总概率精度 $proSum = array_sum($proArr); //概率数组循环 foreach ($proArr as

  • php实现概率性随机抽奖代码

    1.初始数据: 权重越大,抽取的几率越高 [奖品1, 权重 5], [ 奖品2, 权重6], [ 奖品3, 权重 7], [ 奖品4, 权重2] 2.处理步骤: 1)N = 5 + 6 + 7 + 2 = 20 2)然后取1-N的随机数M 3)界定各 奖品的权重范围值 奖品 1 : 1-5 ; 奖品2 : 6-11: 奖品3: 12-18: 奖品4: 19-20 4) 如果M在某个奖品的权重范围值内,标识这个奖品被抽取到 <?php /** * 奖品 */ class Prize { # ID

  • 适用于抽奖程序、随机广告的PHP概率算法实例

    那么我们在程序里必然会设计到算法,即按照一定的概率让用户获得奖品.先来看两个概率算法函数. 算法一 复制代码 代码如下: /** * 全概率计算 * * @param array $p array('a'=>0.5,'b'=>0.2,'c'=>0.4) * @return string 返回上面数组的key */function random($ps){    static $arr = array();    $key = md5(serialize($ps)); if (!isset

  • 基于PHP实现简单的随机抽奖小程序

    一个抽奖小程序,概论可控,也可某个奖品在前端显示,而程序中根本不可能获得!把所有的概率x10后相加起来,新数组中每项的值等于它前几个的和加上它本身. 然后随即生成一个0到最大数之间的一个数,通过循环查看它属于那个区间,返回该区间的key. 代码如下 $prize = array( 1 => 3.5, //3.5%机率 2 => 2.5, 3 => 6, 4 => 2, 5 => 42, //42%机率 6 => 36, 7 => 2, 8 => 4, 9 =

随机推荐