php摇奖程序

来源:互联网 发布:wiley数据库介绍 编辑:程序博客网 时间:2024/04/30 03:47
//安中奖概率由小到大排好了序//id:奖项id用于做甘某些数据的关联时用,prize为奖品名称,v为中奖概率,prize_id为中奖id,num为奖品的剩余量:-1代表不限制,0表示奖品已经没了$prize_arr = array(     '0' => array('id'=>1,'prize'=>'平板电脑','v'=>100,'num'=>0,'prize_id'=>0),     '1' => array('id'=>2,'prize'=>'数码相机','v'=>500,'num'=>10,'prize_id'=>0),     '2' => array('id'=>3,'prize'=>'音箱设备','v'=>1000,'num'=>100,'prize_id'=>0),     '3' => array('id'=>4,'prize'=>'4G优盘','v'=>1200,'num'=>1000,'prize_id'=>0),     '4' => array('id'=>5,'prize'=>'10Q币','v'=>2200,'num'=>-1,'prize_id'=>0),     '5' => array('id'=>6,'prize'=>'下次没准就能中哦','v'=>5000,'num'=>-1,'prize_id'=>0), );//摇奖方法一: $res = get_rand($prize_arr); //根据概率获取奖项id //根据概率获取奖项id //摇奖方法二(推荐):$prize = get_rand2($prize_arr);function get_rand($prize_arr) {$proArr = array();foreach ($prize_arr as $key => $val) {     $proArr[$key] = $val['v']; }    $result = '';      //概率数组的总概率精度     $proSum = array_sum($proArr);      //概率数组循环,多次摇奖,会使用户的中奖率增高     foreach ($proArr as $key => $proCur) {         $randNum = mt_rand(1, $proSum);        if ($randNum <= $proCur) {             $result = $key;             break;         } else {             $proSum -= $proCur;         }     }    unset($proArr);       return $prize_arr[$result]; }function get_rand2($prize_arr) {$proSum = 0;//概率基数 $result = '';//添加prize_id$prize_id = 0;foreach($prize_arr as $key=>&$val){if($val['num']!=0){$proSum += $val['v'];$prize_id += $val['v'];$val['prize_id'] = $prize_id;}else{$val['prize_id'] = 0;}}unset($key,$val);    $prize_id = rand(1,$proSum);//摇中的奖品id    foreach($prize_arr as $key=>$val){    if($prize_id<=$val['prize_id']){    $result = $val;    print_r($result);    break;    }    }         return $result; }


原创粉丝点击