目录

搜索

内容详情

投稿

0 0

/**

 * 随机发放红包算法

 * @param $total 红包总金额,单位为1分

 * @param $num 红包总人数

 * @param $min 每个人最少能收到1分

 * @return $money array 返回生成的红包数组个人所获取红包最少为1元,最多为200元

 * @author huqinlou

 * @version 2015年9月1日 上午10:53:04

 */

function rand_hongbao($total,$num,$min=100){

    if($total<$num){

        return false;

    }

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

        $safe_total=(($total-($num-$i)*$min)/($num-$i+1))*2;//随机安全上限

        $safe_total=(int)$safe_total;

        if ($safe_total > $min) {

             $rand_money = mt_rand($min, $safe_total);

             if($rand_money>20000){

                 $money[$i] = 20000;

             }else{

                 $money[$i] = $rand_money;

             }

        } else {

            $money[$i] = $min;

        }

        $total = $total - $money[$i];

    }

    $money[$num]=$total;

    return $money;

}