常用的概率抽奖算法

网站技术 ayflying 1087℃ 评论

有一个物品数组,从里面按照概率抽取道具


/**
 * 概率抽奖算法
 * @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;
}


转载请注明:七彩悠悠博客 | 心悠悠 情悠悠 » 常用的概率抽奖算法

高效,专业,悠悠博客

联系我们