php控制概率算法场景

时间:2024-11-17 15:06:33
// 短信服务使用概率集合 $smsService = [ 0 => ['type' => 'ali', 'rate' => 40], 1 => ['type' => 'baidu', 'rate' => 60], ]; // 将rate字段放入data集合 $data = array_column($smsService, 'rate'); //$data 结果:Array([0 => 40], [1 => 60]) // 调用方法 $key = getRate($data); // 返回的是key // 输出type $type = $smsService[key]['type']; echo $type; /** * 概率算法 * @param $data * @return int|string */ private function getRate($data){ $result = 0; // 获取总权重:100 $sum = array_sum(data); foreach($data as $key => $val){ $randNum = mt_rand(1, $sum); if ($randNum <= $val){ $result = $key; break; }else { $sum -= $val; } } // 释放 $data unset($data); return $result; }