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 相关文章推荐
PHP insert语法详解
Jun 07 PHP
通过PHP修改Linux或Unix口令的方法分享
Jan 30 PHP
php通过字符串调用函数示例
Mar 02 PHP
ThinkPHP实现将SESSION存入MYSQL的方法
Jul 22 PHP
php字符比较函数similar_text、strnatcmp与strcasecmp用法分析
Nov 18 PHP
Zend Framework教程之路由功能Zend_Controller_Router详解
Mar 07 PHP
php构造方法中析构方法在继承中的表现
Apr 12 PHP
php实现登录tplink WR882N获取IP和重启的方法
Jul 20 PHP
php代码检查代理ip的有效性
Aug 19 PHP
php版微信公众平台接口开发之智能回复开发教程
Sep 22 PHP
详解PHP编码转换函数应用技巧
Oct 22 PHP
thinkphp整合系列之极验滑动验证码geetest功能
Jun 18 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/19 PHP
PHP中全局变量global和$GLOBALS[]的区别分析
2012/08/06 PHP
php+ajax实现带进度条的上传图片功能【附demo源码下载】
2016/09/14 PHP
PDO::errorInfo讲解
2019/01/28 PHP
PHP设计模式之 策略模式Strategy详解【对象行为型】
2020/05/01 PHP
对象的类型:本地对象(1)
2006/12/29 Javascript
js图片向右一张张滚动效果实例代码
2013/11/23 Javascript
jquery.hotkeys监听键盘按下事件keydown插件
2014/05/11 Javascript
DOM节点深度克隆函数cloneNode()用法实例
2015/01/12 Javascript
js+css实现导航效果实例
2015/02/10 Javascript
javascript实现客户端兼容各浏览器创建csv并下载的方法
2015/03/23 Javascript
js判断radiobuttonlist的选中值显示/隐藏其它模块的实现方法
2016/08/25 Javascript
jquery基本选择器匹配多个元素的实现方法
2016/09/05 Javascript
jQuery实现背景滑动菜单
2016/12/02 Javascript
javascript 正则表达式去空行方法
2017/01/24 Javascript
JavaScript实现微信号随机切换代码
2018/03/09 Javascript
初试vue-cli使用HBuilderx打包app的坑
2019/07/17 Javascript
LayUi使用switch开关,动态的去控制它是否被启用的方法
2019/09/21 Javascript
解决ant Design Search无法输入内容的问题
2020/10/29 Javascript
python列表操作实例
2015/01/14 Python
Python的SQLAlchemy框架使用入门
2015/04/29 Python
Python os模块学习笔记
2015/06/21 Python
python搭建服务器实现两个Android客户端间收发消息
2018/04/12 Python
Python XML转Json之XML2Dict的使用方法
2019/01/15 Python
python+webdriver自动化环境搭建步骤详解
2019/06/03 Python
Python队列、进程间通信、线程案例
2019/10/25 Python
Python绘制二维曲线的日常应用详解
2019/12/04 Python
python 解决tqdm模块不能单行显示的问题
2020/02/19 Python
使用Python三角函数公式计算三角形的夹角案例
2020/04/15 Python
使用tensorflow框架在Colab上跑通猫狗识别代码
2020/04/26 Python
纯CSS实现的大小渐变、渐远效果
2014/04/15 HTML / CSS
营销部内勤岗位职责
2014/04/30 职场文书
伦敦奥运会口号
2014/06/13 职场文书
公共场所禁烟标语
2014/06/25 职场文书
《揠苗助长》教学反思
2016/02/20 职场文书
一级电子管军用接收机测评
2022/04/05 无线电