遊戲中按概率抽獎的php程式碼及使用方法
阿新 • • 發佈:2019-01-10
按概率抽取道具是遊戲活動中常用的功能,基本思路是在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];
這樣即可取得按照概率的道具抽獎。