指定红包金额,最小红包金额和红包个数就可以自动生成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
<?php header("Content-type: text/html; charset=utf-8"); $total=1000;//红包总金额 $num=60;// 分成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, ]; } //最后一个红包,不用随机 //$endnum = $num -2; //$money = $readPack[$endnum]['balance']; $readPack[] = [ 'money'=> $total, 'balance'=>0, ]; //返回结果 return $readPack; } } |
转载请注明:PHP笔记 » 指定红包总金额最小红包金额和红包个数生成随机红包