• 技术文章 >后端开发 >php教程

    简析PHP拆红包算法

    藏色散人藏色散人2021-06-10 08:59:34转载246
    本篇文章给大家简析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中文网其它相关文章!

    声明:本文转载于:learnku,如有侵犯,请联系admin@php.cn删除
    专题推荐:PHP
    上一篇:一招解决PHP5的笔记之(COOKIE与SESSION篇)(分享) 下一篇:浅谈PHP-FPM、Nginx和FastCGI间的关系
    第16期线上培训班

    相关文章推荐

    • ThinkPHP3.2.3如何从php5升级到php7• 一分钟解读js与PHP 设置cookie的相互读取(附代码)• 一招解决PHP5的笔记之(COOKIE与SESSION篇)(分享)• windows环境下如何给php安装vld扩展• PHP中什么是正则表达式中的原子?有哪些内容组成?(附代码)

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网