简易的瓜分红包方法
最近项目上线了一个活动,需要瓜分红包。
要求:
1.随机分配 2.有最大金额和最小金额
下面是我写的方法:提前分配好红包金额给来的人,后面直接显示就可以了。
/**
* @param $total 平分金额总额
* @param $num 总人数
* @param $min 最小金额
* @param $max 最大金额
* @return array|bool
*/
function randRedPacket($total, $num, $min, $max){
if($total < 0 || $num < 0 || $min < 0 || $max < 0){
return false;
}
if($min * $num > $total){
return false;
}
$ret = [];
$left = $total - ($num * $min);
for($i = 0; $i<$num; $i++){
if(($left + $min) < $max){
$max = $left + $min;
}
if($i == ($num - 1)){
$tmp = $left;
} else {
$tmp = rand(0, ($max - $min));
}
$ret[] = $min + $tmp;
$left = $left - $tmp;
}
shuffle($ret);
return $ret;
}
输出即可,应该算作最简单的瓜分金额方法了吧。
龙卷风之殇

浙公网安备 33010602011771号