PHP 红包生成(定额随机)

<?
function RandHBMake($hbqnum,$hbqmoney,$hbqlowmoney,$hbqmaxmoney,$hbqloc,$clist=''){
    $hblist=array();
    $takenum=0;
    $leftmoney=$hbqmoney;
    if($clist!=''){
        $clist=str_replace(",",",",$clist);
        if (strrpos($clist,",")>0) {
            $cclist=explode(",",$clist);
            for($k=0;$k<count($cclist);$k++){
                if($cclist[$k]!=""){
                    $takenum+=1;
                    $okleftMoney=$leftmoney-(int)$cclist[$k];
                    $leftmoney=$okleftMoney;
                    $hblist[$takenum]=(int)$cclist[$k];
                }
            }
        }else{
            $takenum+=1;
            $okleftMoney=$leftmoney-(int)$clist;
            $leftmoney=$okleftMoney;
            $hblist[$takenum]=(int)$clist;
        }
    }
    $starti=$takenum+1;
    for($i=$starti;$i<=$hbqnum;$i++){
        list($okleftMoney,$okData)=GetHBMoney($i,$hbqnum,$hbqmoney,$leftmoney,$hbqlowmoney,$hbqmaxmoney,$hbqloc,$takenum);
        if ($okData>0) {
            $takenum+=1;
        }
        $leftmoney=$okleftMoney;
        $hblist[$i]=$okData;
        $okData1+=$okData;
    }
    shuffle($hblist);
    return $hblist;
}
function GetHBMoney($nownum,$hbqnum,$hbqmoney,$leftmoney,$hbqlowmoney,$hbqmaxmoney,$hbqloc,$takenum){
    $loc=($hbqloc-$takenum)-1;
    $TmpMoney=rand($hbqlowmoney,$hbqmaxmoney);
    $lasthbnum=$hbqnum-$nownum;
    $lowlastmoney=$loc*$hbqlowmoney;
    if ($TmpMoney==0) {
        if($lasthbnum>$loc){
            return Array($leftmoney,$TmpMoney);
        }else{
            $alrleftmoney=$leftmoney-$hbqlowmoney;
            return Array($alrleftmoney,$hbqlowmoney);
        }
    }else{
        if ($TmpMoney<$hbqlowmoney) {
            $TmpMoney=$hbqlowmoney;
            //$alrleftmoney=$leftmoney-$TmpMoney;
            //return Array($alrleftmoney,$TmpMoney);
        }
        if($hbqloc==$takenum+1){
            $alrleftmoney=0;
            return Array($alrleftmoney,$leftmoney);
        }
        if($leftmoney>=$lowlastmoney&&$loc>=0){
            $alrleftmoney=$leftmoney-$TmpMoney;
            $newlowlastmoney=$lowlastmoney;
            if($alrleftmoney>=$lowlastmoney){
                return Array($alrleftmoney,$TmpMoney);
            }else{
                $TmpMoney=$leftmoney-$newlowlastmoney;
                $alrleftmoney=$leftmoney-$TmpMoney;
                return Array($alrleftmoney,$TmpMoney);
            }
        }elseif($loc<=0){
            return Array($leftmoney,0);
        }else{
            $TmpMoney=$hbqlowmoney;
            $alrleftmoney=$leftmoney-$TmpMoney;
            return Array($alrleftmoney,$TmpMoney);
        }
    }
}
?>

调用方式:
<?
    $hbqnum=100;//红包数量
    $hbqmoney=10000;//红包总金额(分)
    $hbqlowmoney=10;//最低可获取金额(分)
    $hbqmaxmoney=200;//最高可获取金额(分)
    $hbqloc=70;//必有金额的红包数量
    $clist=“111,222,333”;//生成定额红包(分)
    $HBMoneyList=RandHBMake($hbqnum,$hbqmoney,$hbqlowmoney,$hbqmaxmoney,$hbqloc,$clist);
    print_r($HBMoneyList);

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值