zoukankan      html  css  js  c++  java
  • php红包算法函数[优化]


    php红包算法

    
    <?php
    header("Content-Type: text/html;charset=utf-8");//输出不乱码,你懂的  
    $total=10000;//红包总额  
    $num=10;// 分成8个红包,支持8人随机领取  
    $min=10;//每个人最少能收到0.01元
    echo '<pre>';
    $redarr=array();
    for ($i=1;$i<=$num;$i++)  
    {  
        $red=getredmoney($i,$total,$num,$min);
        $total=$total-$red['money'];
        echo '第'.$i.'个红包:'.$red['money'].' 元,余额:'.$red['total'].' 元 <br/>';
        $redarr[]=$red['money'];
    }
    echo '总金额:'.array_sum($redarr);
    
    /**
     * 获取红包
     * @param $i 第几个人
     * @param $total 剩余总红包金额
     * @param $num 总人数
     * @param $min 最小获得金额
     * @param $point 保留小数位数
     */
    function getredmoney($i,$total,$num=10,$min=1,$point=0){
        if($i==$num){
            $money=$total;
        }else{
            $pre=$total/($num-$i+1);
            if($pre==$min){
                $money=$min;
            }else if($pre<$min || ($pre-$min)<1){
                $safe_total=$total-($num-$i)*$min;//随机安全上限 
                $money=@mt_rand($min*100,$safe_total*100)/100;
            }else{
                $safe_total=($total-($num-$i)*$min)/($num-$i);//随机安全上限
                $money=@mt_rand($min*100,$safe_total*100)/100;
                if($money<$min)$money=$min;
            }
            $money=round($money,$point);
        }
        $total=$total-$money; 
        return array('i'=>$i,'money'=>$money,'total'=>$total);
    }
    ?>
    
    
  • 相关阅读:
    with open 向文件的某一固定行,追加内容
    静态语言 与 动态语言 的区别
    ELK
    matplotlib绘图
    django用户认证
    django+uwsgi+nginx 部署生产环境
    图片验证码+session
    ajax
    form
    middleware中间件
  • 原文地址:https://www.cnblogs.com/lalalagq/p/10224551.html
Copyright © 2011-2022 走看看