php實現微信紅包金額隨機分配的函數

<?php /* 參數請自己校驗 $money 準備發送多少錢(分) $n 個數 $rate 控制紅包的係數 */ function makeRedPacket($money, $n, $rate = 0.5) { //每個紅包先保留1分錢 $hold = $n; //分剩下的錢 $remainder = $money - $hold; $result = []; for($i = 1; $i <= $n; $i++){ //如果剩餘的錢沒有了就給1分錢 if($remainder <= 0){ $result[] = 1; } else{ $max = floor($remainder * $rate); $rand = mt_rand(1, $max); //把保留的1分錢加進去 $result[] = $rand + 1; //剩餘的錢需要減去剛纔發出去的 $remainder -= $rand; } } //如果剩餘的錢沒有分配完直接給到第一個元素 if($remainder > 0){ $result[0] += $remainder; } //把數組隨機打亂 shuffle($result); return $result; } $result = makeRedPacket(1789, 8); print_r($result); $sum = array_sum($result); print_r($sum);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章