php计算抽奖的概率

2 篇文章 0 订阅
<?php 

    //计算抽奖的概率
    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;   
    }   
    $prize_arr = array(   
        '0' => array('id'=>1,'prize'=>'1000000514','v'=>2),   
        '1' => array('id'=>2,'prize'=>'1000000513','v'=>5),   
        '2' => array('id'=>3,'prize'=>'1000000512','v'=>13),   
        '3' => array('id'=>4,'prize'=>'1000000511','v'=>15),   
        '4' => array('id'=>5,'prize'=>'1000000510','v'=>25),   
        '5' => array('id'=>6,'prize'=>'1000000509','v'=>30),  
		'6' => array('id'=>7,'prize'=>'1000000508','v'=>10), 
    );   
    foreach ($prize_arr as $key => $val) {   
        $arr[$val['id']] = $val['v'];   
    }   
    $rid = get_rand($arr);  
    $res['yes'] = $prize_arr[$rid-1]['prize']; 
    unset($prize_arr[$rid-1]);    
    shuffle($prize_arr);  
	$prize_arrcount = count($prize_arr); 
    for($i=0;$i<$prize_arrcount;$i++){   
        $pr[] = $prize_arr[$i]['prize'];   
    }   
    $res['no'] = $pr;   
	//抽奖结果
    $ro = $res['yes'];
	print_r($ro);
		


?>

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值