php实现红包功能代码
发布时间:2018/3/13 9:54:03 来源: 纵横数据
本文主要和大家分享php实现的红包功能,主要以代码的形式和大家分享,由于是第一写红包对红包不是太了解,希望能帮助到大家。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | for ($i=1; $i < $p; ++$i) { $s2 = ($sum - ($p - $i) * 0.01)/($p - $i); //echo $s2;die; $money = rand(1,$s2*100); $money = number_format($money/100,2,'.',','); $sum = $sum - $money; $wamp[$i] = $money; } //format_number(要转换的浮点数,要分隔的符号) echo "<hr/>"; echo "<pre>"; print_r($wamp); echo "<pre>";}//echo 2; |
可以基本实现红包功能 主要说说思想
场景 有个同学群 里面有 50个同学 为了庆祝聚会 要发红包
首先要求每个人必须领到红包 并且每个人领到红包概率基本相同
那么 每个人领到红包概率 = (红包现有的金额 - (当前没领到红包人数) * 每人最少领到红包的金额 )/ 当前没领到红包人数
$safe_total 每个人领到红包概率 $total 红包现有的金额 $min 人最少领到红包的金额
那么 公式 就能 $safe_total = ($total - ($num - $i) * $min) / ($num - $i);
代码不唯一 重要的就是 思想
下面是参考代码
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 | function getRedGift($total, $num = 10){$min = 0.01;$wamp = array();$returnData = array();for ($i = 1; $i < $num; ++$i) {$safe_total = ($total - ($num - $i) * $min) / ($num - $i); //红包金额的最大值 为了是大部分个人获得的红包金额一定if ($safe_total < 0) break;$money = @mt_rand($min * 100, $safe_total * 100) / 100;//随机产生一个红包金额$total = $total - $money;//剩余红包总额$wamp[$i] = round($money, 2);//保留两位有效数字}$wamp[$i] = round($total, 2);$returnData['MoneySum'] = $wamp;$returnData['newTotal'] = array_sum($wamp);return $returnData;}//测试$data = getRedGift(100, 10);echo "<pre>";print_r($data);echo "<pre>"; |
本文来源:
https://www.zndata.com/article/1937.html
[复制链接]
链接已复制
上一篇:没有了
下一篇:没有了

