如何用PHP实现一个公平且高效的随机红包分配算法?

PHP随机红包算法

以下是一个PHP实现的随机红包算法,该算法可以确保每个红包金额在指定范围内,并且总金额等于预设的总金额。

如何用PHP实现一个公平且高效的随机红包分配算法?插图1
(图片来源网络,侵删)
<?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.34, 18.34, 18.34, 18.34, 10.6]
totalAmount = 200, numOfPeople = 10 [25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0, 25.0]
totalAmount = 50, numOfPeople = 3 [16.67, 16.67, 16.66]

由于使用了随机数生成器,每次运行的结果可能会有所不同。

如何用PHP实现一个公平且高效的随机红包分配算法?插图3
(图片来源网络,侵删)

本文来源于互联网,如若侵权,请联系管理员删除,本文链接:https://www.9969.net/47393.html

小末小末
上一篇 2024年9月10日 09:13
下一篇 2024年9月10日 09:37

相关推荐