领红包算法

it2024-07-07  46

<?php /** * 抢红包算法简单实现 * 原理:(1)每个人都要拿到红包 * (2)每个人获取的总和是发出红包的总金额 * (3)每个人获取金额不会相差太大 */ class money { private $min=0.01; //针对中国货币来说,最少是1分,单位是元 /** * 抢红包方法 * @param int $total 总金额 * @param int $num 红包个数 */ public function share($total, $num) { if(empty($total) || !is_int($total)) return false; if(empty($num) || !is_int($num)) return false; $min = $this->min; for($i=1;$i<$num;$i++) { $safe = ($total-($num-$i)*$min)/($num-$i); //随机安全上限 $money = mt_rand($min*100,$safe*100)/100; //获取金额的随机值 $total = $total-$money; //总数在减少; $m[] = $money; } $m[] = $total; return $m; } }
最新回复(0)