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&amp;&amp;mysql)一
Oct 09 PHP
gd库图片下载类实现下载网页所有图片的php代码
Aug 20 PHP
PHP CURL获取返回值的方法
May 04 PHP
ThinkPHP自动填充实现无限级分类的方法
Aug 22 PHP
php中file_get_contents与curl性能比较分析
Nov 08 PHP
ThinkPHP文件缓存类代码分享
Apr 22 PHP
php递归调用删除数组空值元素的方法
Apr 28 PHP
thinkphp在低版本Nginx 下支持PATHINFO的方法分享
May 27 PHP
php实现学生管理系统
Mar 21 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
Feb 07 PHP
PHP的mysqli_ssl_set()函数讲解
Jan 23 PHP
php将xml转化对象的实例详解
Nov 17 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变量范围介绍
2012/10/15 PHP
ThinkPHP3.1基础知识快速入门
2014/06/19 PHP
php静态文件返回304技巧分享
2015/01/06 PHP
Discuz不使用插件实现简单的打赏功能
2019/03/21 PHP
PHP中迭代器的简单实现及Yii框架中的迭代器实现方法示例
2020/04/26 PHP
IE和Firefox下event事件杂谈
2009/12/18 Javascript
在IE6下发生Internet Explorer cannot open the Internet site错误
2010/06/21 Javascript
js字符编码函数区别分析
2011/12/28 Javascript
利用javascript实现全部删或清空所选的操作
2014/05/27 Javascript
深入学习JavaScript中的Rest参数和参数默认值
2015/07/28 Javascript
JavaScript实现点击按钮字体放大、缩小
2016/02/29 Javascript
JavaScript 最佳实践:帮你提升代码质量
2016/12/03 Javascript
微信小程序 页面之间传参实例详解
2017/01/13 Javascript
判断横屏竖屏(三种)
2017/02/13 Javascript
Node.js中的http请求客户端示例(request client)
2017/05/04 Javascript
原生JS实现循环Nodelist Dom列表的4种方式示例
2018/02/11 Javascript
浅谈vue中.vue文件解析流程
2018/04/24 Javascript
JS实现利用闭包判断Dom元素和滚动条的方向示例
2019/08/26 Javascript
typescript配置alias的详细步骤
2020/08/12 Javascript
vue 解决在微信内置浏览器中调用支付宝支付的情况
2020/11/09 Javascript
Python Tkinter简单布局实例教程
2014/09/03 Python
python3.6+django2.0开发一套学员管理系统
2018/03/03 Python
DataFrame中去除指定列为空的行方法
2018/04/08 Python
python列表推导式操作解析
2019/11/26 Python
Python tkinter模版代码实例
2020/02/05 Python
python 控制台单行刷新,多行刷新实例
2020/02/19 Python
python多线程semaphore实现线程数控制的示例
2020/08/10 Python
python+selenium+chrome实现淘宝购物车秒杀自动结算
2021/01/07 Python
英国专业美容产品在线:Mylee(从指甲到脱毛)
2020/07/06 全球购物
单位领导证婚词
2014/01/14 职场文书
企业三严三实学习心得体会
2014/10/13 职场文书
2014年招生工作总结
2014/11/26 职场文书
2015年专项整治工作总结
2015/04/03 职场文书
2015年法务工作总结范文
2015/05/23 职场文书
Python实现socket库网络通信套接字
2021/06/04 Python
JavaScript正则表达式实现注册信息校验功能
2022/05/30 Java/Android