PHP实现微信红包金额拆分试玩的算法示例


Posted in PHP onApril 07, 2018

本文介绍了PHP实现微信红包金额拆分试玩的算法示例,分享给大家,有兴趣的可以看一下:

<?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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
在WIN98下以apache模块方式安装php
Oct 09 PHP
PHP伪静态页面函数附使用方法
Jun 20 PHP
腾讯QQ php程序员面试题目整理
Jun 08 PHP
PHP高级对象构建 多个构造函数的使用
Feb 05 PHP
php对大文件进行读取操作的实现代码
Jan 23 PHP
改写函数实现PHP二维/三维数组转字符串
Sep 13 PHP
PHP判断远程图片是否存在的几种方法
May 04 PHP
PHP中SESSION的注销与清除
Apr 16 PHP
PHP实现的登录页面信息提示功能示例
Jul 24 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
Jun 13 PHP
启用OPCache提高PHP程序性能的方法
Mar 21 PHP
详解Laravel服务容器的优势
May 29 PHP
PHP面向对象五大原则之接口隔离原则(ISP)详解
Apr 04 #PHP
PHP面向对象五大原则之开放-封闭原则(OCP)详解
Apr 04 #PHP
PHP面向对象五大原则之单一职责原则(SRP)详解
Apr 04 #PHP
PHP基于面向对象实现的留言本功能实例
Apr 04 #PHP
PHP设计模式之工厂模式定义与用法详解
Apr 03 #PHP
PHP设计模式之原型模式定义与用法详解
Apr 03 #PHP
thinkPHP框架自动填充原理与用法分析
Apr 03 #PHP
You might like
整合了前面的PHP数据库连接类~~做成一个分页类!
2006/11/25 PHP
Linux下ZendOptimizer的安装与配置方法
2007/04/12 PHP
ThinkPHP模板替换与系统常量及应用实例教程
2014/08/22 PHP
smarty内置函数section的用法
2015/01/22 PHP
静态页面的值传递(三部曲)
2006/09/25 Javascript
CutePsWheel javascript libary 控制输入文本框为可使用滚轮控制的js库
2010/02/07 Javascript
在chrome浏览器中,防止input[text]和textarea在聚焦时出现黄色边框的解决方法
2011/05/24 Javascript
javascript中setTimeout的问题解决方法
2014/05/08 Javascript
JS实现带圆弧背景渐变效果的导航菜单代码
2015/10/13 Javascript
jquery实现图片放大镜功能
2015/11/23 Javascript
JavaScript中使用数组方法汇总
2016/02/16 Javascript
prototype.js常用函数详解
2016/06/18 Javascript
jquery中live()方法和bind()方法区别分析
2016/06/23 Javascript
vue日期组件 支持vue1.0和2.0
2017/01/09 Javascript
js实现背景图自适应窗口大小
2017/01/10 Javascript
vue模板语法-插值详解
2017/03/06 Javascript
JavaScript选择排序算法原理与实现方法示例
2018/08/06 Javascript
解决bootstrap模态框数据缓存的问题方法
2018/08/10 Javascript
小程序外卖订单界面的示例代码
2019/12/30 Javascript
python 捕获shell脚本的输出结果实例
2017/01/04 Python
python读取csv文件并把文件放入一个list中的实例讲解
2018/04/27 Python
python 提取key 为中文的json 串方法
2018/12/31 Python
Pandas分组与排序的实现
2019/07/23 Python
基于canvas使用贝塞尔曲线平滑拟合折线段的方法
2018/01/10 HTML / CSS
俄罗斯运动、健康和美容产品在线商店:Lactomin.ru
2020/07/23 全球购物
Herschel Supply Co.美国:背包、手提袋及配件
2020/11/24 全球购物
怎样从/向数据文件读/写结构
2014/11/23 面试题
硕士研究生自我鉴定
2013/11/08 职场文书
地方白酒代理协议书
2014/10/25 职场文书
北京天坛导游词
2015/02/12 职场文书
暂住证证明
2015/06/19 职场文书
莫言诺贝尔获奖感言(全文)
2015/07/31 职场文书
中秋节随笔
2015/08/15 职场文书
电工生产实习心得体会
2016/01/22 职场文书
Pandas 稀疏数据结构的实现
2021/07/25 Python
以MySQL5.7为例了解一下执行计划
2022/04/13 MySQL