<?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;
}
}
领红包算法
最新推荐文章于 2024-07-24 20:25:39 发布