/**
* 全概率计算
*
* @param array $input array('a'=>0.5,'b'=>0.2,'c'=>0.4)
* @param int $pow 小数点位数
* @return array key
*/
function random($input, $pow = 2) {
$much = pow(10, $pow);
$max = array_sum($input) * $much;
$rand = mt_rand(1, $max);
$base = 0;
foreach ($input as $k => $v) {
$min = $base * $much + 1;
$max = ($base + $v) * $much;
if ($min <= $rand && $rand <= $max) {
return $k;
} else {
$base += $v;
}
}
return false;
}
