抽奖的实现 php

 public function get_rand($proArr){
       	$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 $result;
    //配置奖项
    
        
    }
public function award(){
        $prize_arr  = array(
        '0'=>array('id'=>1,'prize'=>'平板电脑','v'=>1),
        '1'=>array('id'=>2,'prize'=>'数码相机','v'=>5),
        '2'=>array('id'=>3,'prize'=>'音箱设备','v'=>10),
        '3'=>array('id'=>4,'prize'=>'优盘','v'=>12),
        '4'=>array('id'=>5,'prize'=>'100Q币','v'=>22),
        '5'=>array('id'=>6,'prize'=>'下次没准就能中哦','v'=>50)
        );
        
	    foreach ($prize_arr as $key => $val) {
              $arr[$val['id']] = $val['v'];
            }
             
            $rid = $this->get_rand($arr); //根据概率获取奖项id
             
            $res['yes'] = $prize_arr[$rid-1]['prize']; //中奖项
            unset($prize_arr[$rid-1]); //将中奖项从数组中剔除,剩下未中奖项
            shuffle($prize_arr); //打乱数组顺序
            for($i=0;$i<count($prize_arr);$i++){
              $pr[] = $prize_arr[$i]['prize'];
            }
            $res['no'] = $pr;
             echo json_encode($res);
	    
	 }

这个就是运行起来的抽奖

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值