大转盘的实现

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);

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏漏斗社区

专属|Spectre漏洞诞生新变体

又到了熬夜看球喝啤酒的快乐日子了!昨晚,有多少小伙们跟斗哥一样,顶着黑眼圈看完了世界杯首场比赛!

14840
来自专栏FreeBuf

UPnP曝Filet-O-Firewall漏洞,数百万家庭路由器处于攻击风险之中

UPnP中曝安全漏洞Filet-O-Firewall,将数百万家庭网络设备置于网络攻击风险之中。导致UPnP中漏洞的主要原因在于,其缺乏足够的身份验证机制。 F...

377100
来自专栏FreeBuf

维基解密披露CIA恶意软件框架中的新工具:AfterMidnight与Assassin

当整个世界都在忙于应对 WannaCry恶意软件之时,维基解密发布了CIA Vault 7工具包中新的一批文件,详细披露了针对Winodws平台上的两个恶意软件...

25560
来自专栏FreeBuf

好莱坞特工必备:维基解密公开CIA用来关闭摄像头监控的工具Dumbo

在过去的 20 年里,我们看到成百上千的电影中,秘密间谍或银行抢劫者通过劫持监控摄像机,让监控录制停止或开始无限循环,随后秘密行动悄无声息地开始,不会留下任何痕...

37130
来自专栏web开发

Node.js包管理器Yarn的入门介绍与安装

FAST, RELIABLE, AND SECURE DEPENDENCY MANAGEMENT. 就在前不久, Facebook 发布了新的 node.js ...

28160
来自专栏FreeBuf

干货梳理 | Vault7文档曝光的那些CIA网络武器

在维基解密曝光的CIA-Vault7文档中,包含了一堆晦涩难懂的名词、行话,以及一些不完整的描述和注册链接,这些信息非常有趣,但很多术语却让人很难理解。所以,在...

27980
来自专栏有趣的Python和你

抖音小姐姐视频爬虫

前段时间,创造101着实火了一把,问我pick哪位小姐姐,当然是唱歌老跑调,跳舞数拍子的杨超越了。其实在看创造101之前,就已经在抖音上关注了她,今天就来爬爬她...

23920
来自专栏沃趣科技

隔壁老王的数据备份“变形”记

隔壁老王作为一名合格的DBA 守护数据安全是他不可推卸的责任 比如每一次的数据库备份 可是你懂的 那备份的速度 ? 于是乎 兢兢业业的老王一边盯着屏幕 一边若有...

43770
来自专栏知无涯

Ubuntu 15.10 中文桌面版/服务器正式版下载 - 华丽免费易于入门的 Linux 操作系统

771100
来自专栏程序员的SOD蜜

用惯了ORM,居然不会写分页SQL了

    最近准备找新工作,于是下午请了假,去上地软件园一家国内大型软件外包公司去面试架构师,从国贸到面试地点,坐地铁足足走了一个半小时,终于到了前台,联系了HR...

33660

扫码关注云+社区

领取腾讯云代金券