zoukankan      html  css  js  c++  java
  • 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>';
            
        
    ?>
  • 相关阅读:
    MySQL 连接的使用:语法及案例剖析、INNER JOIN、LEFT JOIN、RIGHT JOIN
    MySQL GROUP BY 分组语句:语法及案例剖析、使用 WITH ROLLUP
    MySQL 排序:语法及案例剖析、在命令提示符中使用 ORDER BY 子句
    MySQL UNION 操作符:语法及案例剖析
    MySQL LIKE 子句:语法及案例剖析、在命令提示符中使用 LIKE 子句
    maven仓库
    maven安装配置
    Jedis
    Redis下载安装以及String类型
    Redis介绍
  • 原文地址:https://www.cnblogs.com/phpfensi/p/3849265.html
Copyright © 2011-2022 走看看