1. 程式人生 > >遊戲中按概率抽獎的php程式碼及使用方法

遊戲中按概率抽獎的php程式碼及使用方法

按概率抽取道具是遊戲活動中常用的功能,基本思路是在class中定義一個抽取概率的私有方法,在其他方法中呼叫此方法,並和其他活動道具配置相配合即可完成按概率抽獎的活動。

首先是一個按概率獲得相應概率id的私有方法:

private function get_rand($Arr) { 
    $result = ''; 
    //概率陣列的總概率精度 
    $proSum = array_sum($Arr); 
    //概率陣列迴圈 
    foreach ($Arr as $key => $proCur) { 
        $randNum = mt_rand(1, $proSum); 
        if ($randNum <= $proCur) { 
            $result = $key; 
            break; 
        } else { 
            $proSum -= $proCur; 
        } 
    } 
    unset ($Arr);
    return $result; 
	} 

然後是與次相同的道具配置,道具id要和概率id相同:

$config=array(
		1=>array(1706,25),
		2=>array(5037,25),
		3=>array(509,400),
		4=>array(5135,400),
		5=>array(516,400),
		6=>array(503,850),
		7=>array(549,850),
		8=>array(504,850),
		9=>array(57,1550),
		10=>array(508,1550),
		11=>array(15,1550),
		12=>array(5033,1550),
 );

上述配置中,共有12種道具,每個道具為其id值和每一萬次抽取的概率,實現按概率抽取道具:

$prob =array();
foreach ($config as $k=>$v)
{
	array_push($prob,$v[1]);
$getrand = $this->get_rand($prob);
$award_id = $getrand+1;
}
$award = $config[$award_id];

這樣即可取得按照概率的道具抽獎。