• 一个小玩意 PHP实现微信红包金额拆分试玩


    <meta charset="utf-8">
    <?php
    // 新年红包金额拆分试玩
    
    class CBonus
    {
        public $bonus;//红包
        public $bonus_num;//红包个数
        public $bonus_money;//红包总金额
        public $money_single_max;//单个红包限额
        
        public function __construct(){
            $this->bonus_num = 10;
            $this->bonus_money = 200;
            $this->money_single_max = 60;
        }
    
        private function randomFloat($min = 0, $max = 1) {
            $mt_rand = mt_rand();
            $mt_getrandmax = mt_getrandmax();
            echo 'mt_rand=' . $mt_rand . ', mt_getrandmax=' . $mt_getrandmax . '<hr/>';
            return $min + $mt_rand / $mt_getrandmax * ($max - $min);
        }
        //计算
        public function compute()
        {
            $this->bonus = array();
            $bonus_money_temp = $this->bonus_money;
            $money_single_max = $this->money_single_max;
            $i = 1;
            while($i < $this->bonus_num)
            {
                if ($money_single_max > $bonus_money_temp)
                {
                    $money_single_max = floatval(sprintf("%01.2f", $bonus_money_temp / 2));//剩余金额不够分时,把剩余金额的一半作为备用金
                }
                $bonus_money_rad = $this->randomFloat(0.01, $money_single_max);//一个红包随机金额 最小的1分钱
                $bonus_money_rad = floatval(sprintf("%01.2f", $bonus_money_rad));
                $bonus_money_temp = $bonus_money_temp - $bonus_money_rad ;//待分配的总剩余金额
                $bonus_money_temp = floatval(sprintf("%01.2f", $bonus_money_temp));
                $this->bonus[] = $bonus_money_rad;
                //echo $bonus_money_rad . ',' . $bonus_money_temp . '<hr/>';
                $i++;
            }
            $this->bonus[] = $bonus_money_temp;//分配剩余金额给最后一个红包
        }
        //打印
        public function output(){
            $total = 0;
            foreach($this->bonus as $k => $v)
            {
                echo '红包' . ($k+1) . '=' . $v . '<br/>';
                $total += $v;
            }
            echo '红包总金额:'.$total;
        }
    }
    
    $CBonus = new CBonus();
    $CBonus->compute();
    $CBonus->output();
    ?>

    演示结果:

    红包1=12.36
    红包2=24.37
    红包3=42.71
    红包4=36.92
    红包5=25.84
    红包6=23.17
    红包7=15.92
    红包8=1.35
    红包9=7.75
    红包10=9.61
    红包总金额:200

    红包1=24.59
    红包2=17.66
    红包3=29.67
    红包4=32.34
    红包5=12.67
    红包6=37.15
    红包7=17.41
    红包8=15.23
    红包9=6.13
    红包10=7.15
    红包总金额:200

  • 相关阅读:
    第三章:模板扩展
    第二章:表单和模板
    第一章:引言
    ZABBIX 调用PYTHON脚本监控 磁盘剩余空间(创建模版,创建监控项,创建触发器)
    访问虚拟机中的架设的Web服务器
    服务器上的 Git
    windows命令
    POPTEST联合创始人李爱然的“IT培训创业的随想"
    老李分享:大数据性能调优案例
    老李思考:看夏洛特烦恼有感
  • 原文地址:https://www.cnblogs.com/imbin/p/3536276.html
Copyright © 2020-2023  润新知