摘要: 需求:客户跟进项目,当有新客户进入系统,按照指定概率将客户分配给指定员工来跟进,给每个待指定的员工一个概率(概率之和为1),然后按照概率来分配即可。代码:...
需求:
客户跟进项目,当有新客户进入系统,按照指定概率将客户分配给指定员工来跟进,给每个待指定的员工一个概率(概率之和为1),然后按照概率来分配即可。
代码:
function randomFloat($min = 0, $max = 1) {
return $min + mt_rand() / mt_getrandmax() * ($max - $min);
}
function Choose($seq, $prob, $k=1)
{
$list = [];
for ($i = 0; $i < $k; $i++) {
$q = randomFloat();
for ($j = 0; $j <= count($seq); $j++) {
if(array_sum(array_slice($prob, 0, $j)) < $q && $q <= array_sum(array_slice($prob, 0, $j + 1))) {
$list[$i] = $seq[$j];
break;
}
}
}
return $list;
}
$a = ['1', '0.5', '0.3'];
$b = [0.05, 0.10, 0.85];
// 重复100000次
$k = 100000;
$res = Choose($a, $b, $k);
// 统计每个元素出现的次数
var_export(array_count_values($res));