以下是一个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