代码笔记 | 微信红包算法

来源:互联网 发布:mac win10触控板手势 编辑:程序博客网 时间:2024/06/04 19:01
 /**生成红包的函数*/function getRandMoney($totalMoney, $totalPeople=2, $miniMoney=1){          $randRemainMoney = $totalMoney - $totalPeople * $miniMoney;//剩余需要随机的钱数        return _getRandMoney($randRemainMoney, $totalPeople, $miniMoney);    }  /**红包生成的逻辑代码*/function _getRandMoney($totalMoney, $totalPeople, $miniMoney){          $returnMessage = array('status'=>1, 'data'=>NULL);        if($totalMoney > 0){            $returnMessage['data'] = _randMoney($totalMoney, $totalPeople, $miniMoney);        }elseif($totalMoney == 0){            $returnMessage['data'] = array_fill(0, $totalPeople, 1);        }else{            $returnMessage['status'] = -1;            $returnMessage['data'] = '参数传递有误,生成红包失败';        }          return $returnMessage;    }  /*参数无误,开始生成对应的红包金额*/function _randMoney($totalMoney, $totalPeople, $miniMoney){          $data = array_fill(0, $totalPeople, $miniMoney);        if($totalPeople > 1){            foreach($data as $k => $v){                if($k == $totalPeople -1){                    $data[$k] = $totalMoney + $v;                    break;                }else {                    if($totalMoney == 0) break;                    $randMoney = rand(0, $totalMoney);                    $totalMoney -= $randMoney;                    $data[$k] = $randMoney + $v;                }                            }        }        return $data;    }

0 0