抽奖算法可以分为两种,常规的是按照概率分布,这个相对公平,另一种是人为拟定好,这个可以更好的控制。当然就我工作接触的最多的是第二种,抽奖本身也是一种营销,依赖概率分布不能保证会有效果。
常规概率算法
function getRand($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;
}