在业务场景中经常会提出给用户发红包的需求,我们来看看是怎么实现的
一般情况下只需要吧红包的金额算好.
按照用户的领取顺序发给用户就好了.
当然你也可以在每个用户领取之后重新计算下一个用户的红包金额.
/**
* @param int $total 红包总金额(元)
* @param int $num 红包总数
*/
public function redPacks($total, $num)
{
$min=0.01;//每个人最少0.01元
for ($i=1;$i<$num;$i++)
{
$safe_total=($total-($num-$i)*$min)/($num-$i);
$money=rand($min*100,$safe_total*100)/100;
$total=$total-$money;
$data[$i-1] = $money;
}
$data[$num-1] = $total;
return $data;
}
$red = redPacks(8,8);
print_r($red);
运行结果:
[
0.42,
0.77,
1.13,
0.24,
0.24,
0.74,
2.23,
2.23
]
登录后可发表评论