- <?php
- $total=20;//红包总金额
- $num=10;// 分成10个红包,支持10人随机领取
- $min=0.01;//每个人最少能收到0.01元
- $redpack = new redpack($total,$num,$min);
- $jieguo = $redpack->getPack();
- foreach($jieguo as $key=>$val){
- $n = $key+1;
- echo '第'.$n.'个红包:'.$val['money'].' 元,余额:'.$val['balance'].' 元<br>';
- }
- class redpack{
- //总金额
- private $total=0;
- //红包数量
- private $num=0;
- //最小红包金额
- private $min=0.01;
- public function __construct($total,$num,$min)
- {
- $this->total = $total;
- $this->num = $num;
- $this->min = $min;
- }
- //红包结果
- public function getPack()
- {
- $total = $this->total;
- $num = $this->num;
- $min = $this->min;
- for ($i=1;$i<$num;$i++)
- {
- $safe_total=($total-($num-$i)*$min)/($num-$i);//随机安全上限
- $money=mt_rand($min*100,$safe_total*100)/100;
- $total=$total-$money;
- //红包数据
- $readPack[]= [
- 'money'=>$money,
- 'balance'=>$total,
- ];
- }
- //最后一个红包,不用随机
- $readPack[] = [
- 'money'=>$money,
- 'balance'=>0,
- ];
- //返回结果
- return $readPack;
- }
- }
- //该片段来自于http://www.codesnippet.cn/detail/1412201514219.html
来源: http://www.codesnippet.cn/detail/1412201514219.html