PHP实现红包的随机分配公式

PHP实现红包的随机分配公式

<?php

/** * 随机分配红包方案(分配总金额和红包总额误差0.01,可在返回时添加到其中任一数组) * @param $total 红包总额 * @param $num 红包个数 * @param $max 每个小红包的最大额 * @param $min 每个小红包的最小额 * @return 存放生成的每个小红包的值的一维数组 */ function red_packet($total,$num,$max,$min){ $re=[]; while ($num>0){ $vag=round($total/$num,2);//1.计算红包的平均金额,四舍五入保留两位小数点 $num--; $tmp_max=min($max,round($total-$num*$min,2));//保证剩下红包金额不小于范围中的最小值 $tmp_min=max($min,round($total-$num*$max,2));//保证剩下红包金额不大于范围中的最大值 $vag_diff=min($tmp_max-$vag,$vag-$tmp_min);//这是波动幅度 $end_max=$vag+$vag_diff;//保证剩下红包金额不小于范围中的最小值 $end_min=$vag-$vag_diff; $money=abs(round(mt_rand($end_min*100,$end_max*100)/100,2));//abs()取绝对值 $total-=$money; $re[]=$money; } return $re; }





猜你喜欢

转载自www.cnblogs.com/ccw869476711/p/12811346.html