大转盘的实现

简介: header('content-type: text/html;charset=utf-8');date_default_timezone_set('prc');//如果上面两行不存在对应问题,可以不设置/** * 保存转盘信息及提前设定的中...
header('content-type: text/html;charset=utf-8');
date_default_timezone_set('prc');
//如果上面两行不存在对应问题,可以不设置

/**
 * 保存转盘信息及提前设定的中奖者用户
 */
$prize_arr = array(
    array('min'=>1, 'max'=>89, 'prize'=>'一等奖', 'v'=>25, 'preuser'=>array(51)),
    array('min'=>90, 'max'=>179, 'prize'=>'二等奖', 'v'=>25),
    array('min'=>180, 'max'=>360, 'prize'=>'三等奖', 'v'=>50)
);

/**
 * 根据中奖占比获得对应的项
 * @param $prizeinfo array 转盘信息
 * @param $curruser int 当前玩转盘用户id
 * @return int 返回中奖项
 */
function getRand($prizeinfo, $curruser = 0)
{
     //根据prize_arr信息,对应key和中奖占比
    foreach ($prizeinfo as $key=>$val){
        $proArr[$key] = $val['v'];
    }
    $res = '';
    $proSum = array_sum($proArr);
    foreach ($prizeinfo as $key => $cur) { //预定

        if(!empty($cur['preuser']) && in_array($curruser, $cur['preuser'])){
            return $key;
        }
    }
    foreach ($proArr as $key => $proCur) {//未预定
        $randNum = mt_rand(1, $proSum);
        if($randNum <= $proCur){ //倘若本次随机数落在占比范围内则表示已经中奖
            $res = $key;
        }else{
            $proSum -= $proCur;
        }
    }
    unset($proArr);
    return $res;
}
$res = getRand($prize_arr); //根据转盘信息获得对应奖项
$reward = $prize_arr[$res]; //中奖的对应转盘信息
$return = array(
    'angle' => mt_rand($reward['min'], $reward['max']),
    'prize' => $reward['prize'],
    'time' => date('Y-m-d H:i:s')
);

var_dump($return);
目录
相关文章
|
6月前
|
前端开发 Java API
苍穹外卖开发心得(上)
苍穹外卖开发心得(上)
264 6
|
6月前
|
缓存 JavaScript Java
苍穹外卖开发心得(下)
苍穹外卖开发心得(下)
143 5
|
7月前
|
小程序
大转盘抽奖小程序源码
大转盘抽奖小程序源码,测试依旧可用,无BUG,跑马灯旋转效果,非常酷炫。
106 1
|
小程序 前端开发 JavaScript
微信小程序实现抽奖大转盘
微信小程序实现抽奖大转盘
789 0
|
设计模式 数据可视化 Java
肯德基点餐系统
肯德基点餐系统
肯德基点餐系统
|
Ubuntu 测试技术 开发工具
画一个 “月饼” 陪我过中秋,玩转炫彩 “月饼” 之 基本测试
自己的画的炫彩“月饼”到了,本文就开始带大家来玩玩我们自己的月饼 ......by 矜辰所致
538 0
画一个 “月饼” 陪我过中秋,玩转炫彩 “月饼” 之 基本测试
|
移动开发 监控 安全
玩归玩,闹归闹,别拿抽奖开玩笑
轻轻的一个稳,已经打动我的心
948 0
【开发课堂】大转盘?刮刮卡?支付宝小程序营销组件了解一下
营销组件库提供的就是这些核心玩法模块,供开发者去调用,减少自行开发的成本。
2379 12
【开发课堂】大转盘?刮刮卡?支付宝小程序营销组件了解一下
|
JavaScript 前端开发 算法
电影院的选座问题的思考
1.需求分析   后台管理:提供电影院的名字,地址,票价,座位的排布(含空座位),上映时间(含多个)等   前台选座管理:用户可以选择不通的时间,不同的座位,多个座位,选中且放弃的情况,然后支付,出现二维码 2.思考(先提供已经完成的部分,支付部分尚未完成)       就两个页面,一个是表单提交(管理页面),一个是选座页面,后面还有支付页面尚未完成。
1638 0