PHP 波浪递减的砍价算法
编辑时间:2019-09-04 16:09:08 作者:666666

直接贴代码

/**
 * 波浪递减砍价算法
 * @param $count 拆分数量 
 * @param $price 拆分总价
 */
function new_split_red_packet($count = 20, $price = 5)
{
    //已砍价格数组
    $aleadyList = [];
    //已砍钱的总和
    $aleadyCut = 0;

    for ($i = 0; $i < $count; $i++) {
        //此次砍价的最低钱数(总价-已砍总价/总次数-已砍次数)(相当于是向上随机)(转换为单位分)
        $min = ($price - $aleadyCut) / ($count - count($aleadyList));

        //控制波浪幅度 1-2之间
        $max = $min * 1.5;

        //随机生成砍价金额
        $cutPrice = mt_rand($min * 100, $max * 100) / 100;

        //如果是最后一个直接返回金额
        if ($i == $count - 1) {
            $cutPrice = round(($price * 100 - $aleadyCut * 100) / 100, 2);
        }

        //增加已砍总额
        $aleadyCut = ($aleadyCut * 100 + $cutPrice * 100) / 100;

        //砍价额度存入数组
        $aleadyList[] = $cutPrice;
    }

    return $aleadyList;
}

注意事项:如果有php有安装BC库(高精确度函数库)可以使用BC库提供的函数进行运算

返回的波浪线大概是这样的

beta/article



 点赞 6
 收藏 0
 分享
来说两句吧
最新评论
    暂无评论
天气预报
万年历
2015年
7月
返回今天

博客声明

本博客属个人所有,不涉及商业目的。遵守中华人民共和国法律法规、中华民族基本道德和基本网络道德规范,尊重有节制的言论自由和意识形态自由,反对激进、破坏、低俗、广告、投机等不负责任的言行。所有转载的文撰写页面章、图片仅用于说明性目的,被要求或认为适当时,将标注署名与来源。避免转载有明确“不予转载”声明的作品。若不愿某一作品被转用,请及时通知本人。对于无版权或自由版权作品,本博客有权进行修改和传播,一旦涉及实质性修改,本博客将对修改后的作品享有相当的版权。二次转载者请再次确认原作者所给予的权力范围。

本博客所有原创作品,包括文字、资料、图片、网页格式,转载时请标注作者与来源。非经允许,不得用于赢利目的。本博客受中国知识产权、互联网法规和知识共享条例保护和保障,任何人不得进行旨在破坏或牟取私利的行为。本博客声明以简体中文版为准,不对其他语言版本负责。

如有侵权请及时联系我进行处理。邮箱youseeim666@163.com