温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

PHP中拆红包算法的示例分析

发布时间:2021-06-09 15:26:31 来源:亿速云 阅读:119 作者:小新 栏目:编程语言

这篇文章给大家分享的是有关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中拆红包算法的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

php
AI