PHP大转盘OR砸金蛋抽奖中奖概率计算

public function get_lottery(){
        
        header('Access-Control-Allow-Origin:*');
        $pinfo = $this->get_z();
        $return = ["rid"=>$pinfo["id"],"rname"=>$pinfo["name"]];
        return json($return);
    }    
    
    public function get_z(){
        $prizes = array( 
            0 => array( 
                "id" => 0, //中奖id 
                "name" => "谢谢参与", //奖品名称 
                "count" => "1", //库存 
            ), 
            1 => array( 
                "id" => 1, 
                "name" => "罗浮山门票", 
                "count" => "10", 
            ), 
            2 => array( 
                "id" => 2, 
                "name" => "罗浮山嘉宝田温泉体验券", 
                "count" => "50", 
            ), 
            3 => array( 
                "id" => 3, 
                "name" => "精美旅游书籍《山水酿惠州》", 
                "count" => "0", 
            ), 
            4 => array( 
                "id" => 4, 
                "name" => "碧海湾漂流门票", 
                "count" => "50", 
            ), 
            5 => array( 
                "id" => 5, 
                "name" => "南昆山门票", 
                "count" => "0", 
            ), 
            6 => array( 
                "id" => 6, 
                "name" => "云顶温泉精美礼品", 
                "count" => "0", 
            ), 
        );
        
        foreach ($prizes as $key => $val) { 
            $arr[$val['id']] = $val['count'];
        }
        $rid =  $this->getRand($arr,$arr);
        return $prizes[$rid];
    }
    public function getRand($proArr, $proCount) { 
        $result = ''; 
        $proSum = 0; //概率数组循环 
        foreach ($proCount as $key => $val) { 
            if ($val <= 0) { 
                continue; 
            } else { 
                $proSum = $proSum + $proArr[$key]; 
            }
        }
        foreach ($proArr as $key => $proCur) { 
            if ($proCount[$key] <= 0) { 
                continue; 
            } else { 
                $randNum = mt_rand(1, $proSum); 
                if ($randNum <= $proCur) { 
                    $result = $key; 
                    break; 
                } else { 
                    $proSum -= $proCur; 
                } 
            } 
        } 
        unset($proArr); 
        return $result; 
    }

前端调用请求 get_lottery 方法,返回中奖奖项。

转载于:https://my.oschina.net/u/914487/blog/1926317

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值