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 相关文章推荐
基于mysql的论坛(3)
Oct 09 PHP
用php将任何格式视频转为flv的代码
Sep 03 PHP
作为PHP程序员应该了解MongoDB的五件事
Jun 03 PHP
PHP使用DES进行加密与解密的方法详解
Jun 06 PHP
PHP 微信支付类 demo
Nov 30 PHP
Yii中的relations数据关联查询及统计功能用法详解
Jul 14 PHP
PHP实现的文件操作类及文件下载功能示例
Dec 24 PHP
PHP中使用OpenSSL生成证书及加密解密
Feb 05 PHP
PHP实现的激活用户注册验证邮箱功能示例
Jun 06 PHP
PHP+AjaxForm异步带进度条上传文件实例代码
Aug 14 PHP
Laravel框架控制器的middleware中间件用法分析
Sep 30 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
Nov 25 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 处理图片的类实现代码
2009/10/23 PHP
php使用正则过滤js脚本代码实例
2014/05/10 PHP
thinkphp5引入公共部分header、footer的方法详解
2018/09/14 PHP
Android中的jQuery:AQuery简介
2014/05/06 Javascript
Javascript 构造函数详解
2014/10/22 Javascript
JavaScript实现上下浮动的窗口效果代码
2015/10/12 Javascript
jquery通过扩展select控件实现支持enter或focus选择的方法
2015/11/19 Javascript
JS使用正则表达式过滤多个词语并替换为相同长度星号的方法
2016/08/03 Javascript
js对字符串进行编码的方法总结(推荐)
2016/11/10 Javascript
JavaScript交换两个变量值的七种解决方案
2016/12/01 Javascript
JS百度地图搜索悬浮窗功能
2017/01/12 Javascript
javascript验证香港身份证的格式或真实性
2017/02/07 Javascript
前端天气插件tpwidget使用方法详解
2019/06/24 Javascript
Python中无限元素列表的实现方法
2014/08/18 Python
Python 类与元类的深度挖掘 II【经验】
2016/05/06 Python
centos6.4下python3.6.1安装教程
2017/07/21 Python
24式加速你的Python(小结)
2019/06/13 Python
Python+OpenCV+pyQt5录制双目摄像头视频的实例
2019/06/28 Python
用python生成与调用cntk模型代码演示方法
2019/08/26 Python
opencv-python的RGB与BGR互转方式
2020/06/02 Python
Python3实现建造者模式的示例代码
2020/06/28 Python
Python urlopen()参数代码示例解析
2020/12/10 Python
HTML5-WebSocket实现聊天室示例
2016/12/15 HTML / CSS
英国时尚泳装品牌:Maru Swimwear
2019/10/06 全球购物
以太网Ethernet IEEE802.3
2013/08/05 面试题
应届大学生的推荐信
2013/11/20 职场文书
初一英语教学反思
2014/01/11 职场文书
环保专项行动方案
2014/05/12 职场文书
机电专业毕业生求职信
2014/07/01 职场文书
2014年计生协会工作总结
2014/11/21 职场文书
2015年六一儿童节活动总结
2015/02/11 职场文书
2015年学生会干事工作总结
2015/04/09 职场文书
单独二胎证明
2015/06/24 职场文书
自己搭建resnet18网络并加载torchvision自带权重的操作
2021/05/13 Python
SpringBoot2 参数管理实践之入参出参与校验的方式
2021/06/16 Java/Android
JavaScript中的宏任务和微任务详情
2021/11/27 Javascript