本文主要和大家分享php實現的紅包功能,主要以程式碼的形式和大家分享,由於是第一寫紅包對紅包不是太了解,希望能幫助到大家。
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 class="brush:php;toolbar:false">"; print_r($wamp); echo "<pre class="brush:php;toolbar:false">"; } //echo 2;
可以基本上實現紅包功能主要說說思想
場景有個同學群裡面有50個同學為了慶祝聚會要發紅包
首先要求每個人必須領到紅包 並且每個人領到紅包機率基本上相同
那麼每個人領到紅包機率 = (紅包現有的金額- (目前沒領到紅包人數) * 每人最少領到紅包的金額) / 目前沒領到紅包人數
$safe_total 每個人領到紅包機率 $total 紅包現有的金額 $min ($total - ($num - $i) * $min) / ($num - $i);
#代碼不唯一 重要的是思想
下面是參考代碼
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 class="brush:php;toolbar:false">"; print_r($data); echo "<pre class="brush:php;toolbar:false">";
相關推薦:
PHP開發微信現金紅包功能代碼分享以上是php實作紅包功能程式碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!