php实现随机中奖(转盘抽奖)

来源:互联网 发布:国家统计局数据下载 编辑:程序博客网 时间:2024/05/17 03:52
通过后台进行设置奖项的概率,数量,实现随机抽奖的效果。下面只是用了一个示例数据进行模拟
 /**     * 随机中奖     *     * 1、将奖品列表传入     * 2、遍历奖品列表数据,获取其id,概率     * 3、计算概率,随机选出id     * 4、根据id,返回信息     *     */    public function prize(){        $res = [            ['prize_class'=>0,'prize_name'=>'谢谢参与','prize_rank'=>1000],            ['prize_class'=>1,'prize_name'=>'三等奖','prize_rank'=>100],            ['prize_class'=>2,'prize_name'=>'二等奖','prize_rank'=>10],            ['prize_class'=>3,'prize_name'=>'一等奖','prize_rank'=>1],        ];        $finds = ['prize_class','prize_name','prize_rank'];        foreach ($res as $key=>$val){            //array(4) { [0]=> int(1000) [1]=> int(100) [2]=> int(10) [3]=> int(1) }            $arr[$val[$finds[0]]] = $val[$finds[2]];        }        $id = $this->get_rand($arr);        $prizeRes = $res[$id];        var_dump($prizeRes);    }    /**     * 计算概率,返回id     */    public function get_rand($arr){        $proSum = array_sum($arr);//概率总和        if($proSum === 0 ){            return $proSum;        }        foreach ($arr as $key=>$val){            $randNum = mt_rand(1, $proSum);            if ($randNum <= $val) {                $result = $key;                break;            } else {                $proSum -= $val;            }        }        unset($arr);        return $result;    }

0 0