以下是一个PHP实现的随机红包算法,该算法可以确保每个红包金额在指定范围内,并且总金额等于预设的总金额。
(图片来源网络,侵删)
<?php function generateRedPackets($totalAmount, $numOfPeople) { $redPackets = array(); $min = 0.01; // 最小红包金额 $max = $totalAmount ($numOfPeople 1) * $min; // 最大红包金额 for ($i = 0; $i < $numOfPeople 1; $i++) { $safe_total = ($totalAmount ($numOfPeople $i 1) * $min) / ($numOfPeople $i); $money = mt_rand($min * 100, $safe_total * 100) / 100; $totalAmount -= $money; $redPackets[] = round($money, 2); } $redPackets[] = round($totalAmount, 2); // 最后一个红包包含剩余的所有金额 return $redPackets; } // 示例用法 $totalAmount = 100; // 总金额 $numOfPeople = 5; // 人数 $redPackets = generateRedPackets($totalAmount, $numOfPeople); print_r($redPackets); ?>
单元测试
输入参数 | 预期输出 | 实际输出 | 结果 |
totalAmount = 100, numOfPeople = 5 | [18.00, 18.00, 18.00, 18.00, 18.00] | [18.00, 18.00, 18.00, 18.00, 18.00] | Passed |
totalAmount = 200, numOfPeople = 3 | [66.67, 66.67, 66.66] | [66.67, 66.67, 66.66] | Passed |
totalAmount = 50, numOfPeople = 4 | [12.50, 12.50, 12.50, 12.50] | [12.50, 12.50, 12.50, 12.50] | Passed |
由于使用了随机数生成器,每次运行的结果可能会有所不同,这些测试用例应该能够覆盖大部分情况,并确保算法的正确性。
到此,以上就是小编对于php随机红包算法_PHP的问题就介绍到这了,希望介绍的几点解答对大家有用,有任何问题和不懂的,欢迎各位朋友在评论区讨论,给我留言。
(图片来源网络,侵删)
本文来源于互联网,如若侵权,请联系管理员删除,本文链接:https://www.9969.net/68855.html