php红包算法,根据指定金额,指定数量生成

/**

 * @param $total  总金额

 * @param $amount  数量

 * @param float $min 最小金额

 * @return array|false

 */

function getPackets($total,$amount,$min=0.01)

{

    if ($amount * $min > $total) {

        return false;

    }

    $money = 0;

    for ($i = 1; $i < $amount; $i++) {

        $safe_total = ($total - ($amount - $i) * $min) / ($amount - $i);//随机安全上限

        if ($min < $safe_total) {

            $money = mt_rand($min * 100, $safe_total * 100) / 100;

        } else {

            $money = $min;

        }


        $total = $total - $money;


        $redPacket[] = $money;

//            [

//            'money' => $money,

//            'balance' => $total,

//        ];

    }

    //最后一个红包,

    $redPacket[] = round($total,2);

//        [

//        'money' => $total,

//        'balance' => 0,

//    ];


    return $redPacket;

}

调用:我是放在common里面的,所以直接写方法名即可


 $oneCopy =  getPackets(10,2);

注意:数组内的格式我需要这样的,所以处理成这样,具体可根据自己的需求处理数组


本文来自网络,不代表常识大全立场,如若转载,请注明出处:http://www.5150.top/cate/1.html

`