php随机抽奖

貌似有些不合理,麻烦大家帮忙指正指正!谢谢~

<?php
    header("content-type:text/html;charset=utf-8");
    function getv($k,$arr){
        for($j=$k;$j>=0;$j--){
            if($j==0){
                $tmp['b']=intval(0);
                $tmp['e']=intval($arr[$j]['v']);
                return $tmp;
            }else{
                $tmp['b']=intval($arr[$j-1]['e']);
                $tmp['e']=intval($arr[$j-1]['e']+$arr[$j]['v']);
                return $tmp;
            }
        }
    }
    
    
    function dorand(){
        //奖品
        $prize_arr = array(
            '0' => array('id'=>1,'prize'=>'平板电脑','v'=>3),
            '1' => array('id'=>2,'prize'=>'数码相机','v'=>5),
            '2' => array('id'=>3,'prize'=>'音箱设备','v'=>10),
            '3' => array('id'=>4,'prize'=>'4G优盘','v'=>12),
            '4' => array('id'=>5,'prize'=>'Q币10元','v'=>20),
            '5' => array('id'=>6,'prize'=>'下次没准就能中哦','v'=>50),
        );
        //计算概率范围
        for($i=0;$i<count($prize_arr);$i++){
            $tmp = getv($i,$prize_arr);
            $prize_arr[$i]['b'] = $tmp['b'];
            $prize_arr[$i]['e'] = $tmp['e'];
        }
        
        //获取概率
        foreach ($prize_arr as $key => $val) {
            $arr[$val['id']]['v'] = $val['v'];
            $arr[$val['id']]['b'] = $val['b'];
            $arr[$val['id']]['e'] = $val['e'];
            $arr[$val['id']]['prize'] = $val['prize'];
            //获取概率总和
            $sum +=$arr[$val['id']]['v'];
        }
        ///产生随机数
        $r = mt_rand(1, $sum);
        //var_dump($arr);
        //遍历数据
        foreach($arr as $k=>$v){
            //exit;
            //判断概率区间
            if(($v['b']<=$r && $v['e']>=$r)){
                //echo "随机数:".$r . "	" . "概率".$v['b']."--".$v['e'] . "	"."总概率:".$sum. "
";
                //返回中奖id
                $id = $k;
                return $prize = $arr[$k]['prize'];
                break;
            }
        }
    }
    $one = 0;
    $two = 0;
    $three = 0;
    $four = 0;
    $five = 0;
    $six = 0;
    for($z=1;$z<=100;$z++){
        if(dorand()=="平板电脑"){
            $one++;
        }
       if(dorand()=="数码相机"){
            $two++;
        }
       if(dorand()=="音箱设备"){
            $three++;
        }
        if(dorand()=="4G优盘"){
            $four++;
        }
        if(dorand()=="Q币10元"){
            $five++;
        }
        if(dorand()=="下次没准就能中哦"){
            $six++;
        }
        echo "
第【".$z."】次中奖奖品为:".dorand()."<p>";
    }
        echo "平板电脑 :".(($one/100)*100)."%";
        echo '<br>';
        
        echo "数码相机 :".(($two/100)*100)."%";
        echo '<br>';
        
        echo "音箱设备 :".(($three/100)*100)."%";
        echo '<br>';
        
        echo "4G优盘 :".(($four/100)*100)."%";
        echo '<br>';
        
        echo "Q币10元 :".(($five/100)*100)."%";
        echo '<br>';
        
        echo "下次没准就能中哦 :".(($six/100)*100)."%";
        echo '<br>';
        
    
?>
原文地址:https://www.cnblogs.com/phpfensi/p/3849265.html