有一个物品数组,从里面按照概率抽取道具
/**
* 概率抽奖算法
* @param array $proArr 道具数组,格式为 [道具标识 => 概率]
* @return int|string 返回道具标识
* @author: anyang
* @since: 2019/4/17
* @time: 9:48
*/
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;
}转载请注明:七彩悠悠博客 | 心悠悠 情悠悠 » 常用的概率抽奖算法

