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

    xiaoxiao2021-03-25  49

    通过后台进行设置奖项的概率,数量,实现随机抽奖的效果。下面只是用了一个示例数据进行模拟 /** * 随机中奖 * * 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; }
    转载请注明原文地址: https://ju.6miu.com/read-39350.html

    最新回复(0)