这个功能需求很简单 ,所以弄了简单的方法
需要: 1. 有一定随机性
2.生成数组,转成字符串,存入数据库,当领红包的人领时,记录红包领到第几个,然后取对应 的数字就是领取金额
public function getRandMoney($total, $num)
{
$total = $total;//总额
$num = $num;// 分成8个红包,支持8人随机领取
$min = 0.01;//每个人最少能收到0.01元
$arr = [];
for ($i=1; $i<$num; $i++) {
$safe_total = ($total-($num-$i)*$min)/($num-$i);//随机安全上限
if ($safe_total < $min) {
$safe_total = $min;
}
$money = mt_rand($min*100,$safe_total*100)/100;
$total = $total-$money;
$arr[] = $money;
//echo '第'.$i.'个红包:'.$money.' 元,余额:'.$total.' 元 <br/>';
}
$arr[] = $total;
$str = implode($arr, ',');
return $str;
}