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 file_get_contents函数轻松采集html数据
Apr 22 PHP
php中将数组存到文件里的实现代码
Jan 19 PHP
Php中用PDO查询Mysql来避免SQL注入风险的方法
Apr 25 PHP
PHP CLI模式下的多进程应用分析
Jun 03 PHP
PHP获取一个字符串中间一部分字符的方法
Aug 19 PHP
Ubuntu中搭建Nginx、PHP环境最简单的方法
Mar 05 PHP
php计算整个目录大小的方法
Jun 19 PHP
php curl模拟post请求和提交多维数组的示例代码
Nov 19 PHP
php实现批量修改文件名称的方法
Jul 23 PHP
Ajax实现对静态页面的文章访问统计功能示例
Oct 10 PHP
php版微信自定义回复功能示例
Dec 05 PHP
PHP使用pdo实现事务处理操作示例
Sep 05 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二维数组的去重问题解析
2011/07/17 PHP
基于PHP Web开发MVC框架的Smarty使用说明
2013/04/19 PHP
php使用curl模拟登录后采集页面的例子
2013/11/04 PHP
php实现水仙花数的4个示例分享
2014/04/08 PHP
11个PHPer必须要了解的编程规范
2014/09/22 PHP
Zend Framework教程之分发器Zend_Controller_Dispatcher用法详解
2016/03/07 PHP
Yii数据模型中rules类验证器用法分析
2016/07/15 PHP
py文件转exe时包含paramiko模块出错解决方法
2016/08/12 PHP
php如何修改SESSION的生存存储时间的实例代码
2017/07/05 PHP
深入分析JQuery和JavaScript的异同
2014/10/23 Javascript
jquery超简单实现手风琴效果的方法
2015/06/05 Javascript
jQuery实现鼠标点击弹出渐变层的方法
2015/07/09 Javascript
通过隐藏iframe实现无刷新上传文件操作
2016/03/16 Javascript
AngularJS前端页面操作之用户修改密码功能示例
2017/03/27 Javascript
Vue中之nextTick函数源码分析详解
2017/10/17 Javascript
详解为Bootstrap Modal添加拖拽的方法
2018/01/05 Javascript
webpack4的迁移的使用方法
2018/05/25 Javascript
vue项目设置scrollTop不起作用(总结)
2018/12/21 Javascript
发布订阅模式在vue中的实际运用实例详解
2019/06/09 Javascript
解决vue v-for src 图片路径问题 404
2019/11/12 Javascript
JavaScript函数Call、Apply原理实例解析
2020/02/17 Javascript
Vue使用vue-draggable 插件在不同列表之间拖拽功能
2020/03/12 Javascript
详解Vue3中对VDOM的改进
2020/04/23 Javascript
Vue如何基于vue-i18n实现多国语言兼容
2020/07/17 Javascript
Python ZipFile模块详解
2013/11/01 Python
Python实现定时精度可调节的定时器
2018/04/15 Python
python 对类的成员函数开启线程的方法
2019/01/22 Python
python DataFrame 取差集实例
2019/01/30 Python
python使用Qt界面以及逻辑实现方法
2019/07/10 Python
python机器学习包mlxtend的安装和配置详解
2019/08/21 Python
python3 使用Opencv打开USB摄像头,配置1080P分辨率的操作
2019/12/11 Python
不开辟用于交换数据的临时空间,如何完成字符串的逆序
2012/12/02 面试题
一套.net面试题及答案
2016/11/02 面试题
护士专业推荐信
2013/11/02 职场文书
品质管理部岗位职责范文
2014/03/01 职场文书
活动总结格式
2014/08/30 职场文书