简析PHP拆红包算法

藏色散人
发布: 2023-04-10 07:58:02
转载
4572 人浏览过

本篇文章给大家简析PHP拆红包算法,有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

PHP拆红包算法

代码如下:

/**
     * 拆分红包
     * @param SendRedPackageRequest $request
     * @return array
     */
    protected function spitMoney(SendRedPackageRequest $request)
    {
        $result = [];
        $reamingMoney = $request->money;
        for ($i = $request->count; $i >= 1; $i--) {
            if ($i === 1) {
                $result[] = round($reamingMoney, 2);
                $reamingMoney = 0;
            } else {
                $average = round(bcdiv($reamingMoney, $i), 2);    //平均值
                $amount = round(mt_rand(1, $average * 199) / 100, 2);
                $reamingMoney = doubleval(bcsub($reamingMoney, $amount));
                $result[] = round($amount, 2);
            }
        }
        return $result;
    }
登录后复制

逻辑比较简单,传入金额.和拆分的数量

首先循环要拆分的数量,判断如果是最后一个就把剩下的钱全部塞进去;

如果不是,就取剩余的金额(第一次循环剩余的金额=总金额)除以剩下的次数,取得平均值,然后再随机取最小的0.01 和平均值*2,把剩余的金额更新一下就行了。

算法模拟微信拆红包算法,但是这是提前计算拆分的数据保存的,微信是每次动态计算的。

推荐学习:《PHP视频教程

以上是简析PHP拆红包算法的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
php
来源:learnku.com
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!