其他分享
首页 > 其他分享> > 简易的瓜分红包方法

简易的瓜分红包方法

作者:互联网

最近项目上线了一个活动,需要瓜分红包。

要求:

    1.随机分配  2.有最大金额和最小金额 

下面是我写的方法:提前分配好红包金额给来的人,后面直接显示就可以了。

 

/**
 * @param $total  平分金额总额
 * @param $num     总人数
 * @param $min      最小金额
 * @param $max      最大金额
 * @return array|bool
 */

function randRedPacket($total, $num, $min, $max){
    if($total < 0 || $num < 0 || $min < 0 || $max < 0){
        return false;
    }
    if($min * $num > $total){
        return false;
    }
    $ret = [];
    $left = $total - ($num * $min);
    for($i = 0; $i<$num; $i++){
        if(($left + $min) < $max){
            $max = $left + $min;
        }
        if($i == ($num - 1)){
            $tmp = $left;
        } else {
            $tmp = rand(0, ($max - $min));
        }
        $ret[] = $min + $tmp;
        $left = $left - $tmp;
    }
    shuffle($ret);
    return $ret;
}

输出即可,应该算作最简单的瓜分金额方法了吧。  

 

标签:红包,return,min,金额,param,瓜分,简易,num,total
来源: https://www.cnblogs.com/wujf-myblog/p/15193186.html