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 相关文章推荐
模拟flock实现文件锁定
Feb 14 PHP
新安装的MySQL数据库需要注意的安全知识
Jul 30 PHP
PHP Undefined index报错的修复方法
Jul 17 PHP
PHP的简易冒泡法代码分享
Aug 28 PHP
PHP常用的文件操作函数经典收藏
Apr 02 PHP
php设计模式之命令模式的应用详解
May 21 PHP
php中autoload的用法总结
Nov 08 PHP
PHP模板引擎Smarty的缓存使用总结
Apr 24 PHP
ThinkPHP令牌验证实例
Jun 18 PHP
php 问卷调查结果统计
Oct 08 PHP
浅析PHP7新功能及语法变化总结
Jun 17 PHP
php实现银联商务公众号+服务窗支付的示例代码
Oct 12 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输出时间格式
2013/08/31 PHP
PHP把JPEG图片转换成Progressive JPEG的方法
2014/06/30 PHP
php时间戳格式化显示友好的时间函数分享
2014/10/21 PHP
PHP mysqli事务操作常用方法分析
2017/07/22 PHP
利用php获得flv视频长度的实例代码
2017/10/26 PHP
PHP树形结构tree类用法示例
2019/02/01 PHP
JQuery的ajax基础上的超强GridView展示
2009/09/18 Javascript
JavaScript eval() 函数介绍及应用示例
2014/07/29 Javascript
Jquery ajax加载等待执行结束再继续执行下面代码操作
2015/11/24 Javascript
jquery ajax双击div可直接修改div中的内容
2016/03/04 Javascript
基于AngularJs + Bootstrap + AngularStrap相结合实现省市区联动代码
2016/05/30 Javascript
详解jQuery中基本的动画方法
2016/12/14 Javascript
EditPlus 正则表达式 实战(3)
2016/12/15 Javascript
javascript 中设置window.location.href跳转无效问题解决办法
2017/02/09 Javascript
JS简单获取日期相差天数的方法
2017/04/24 Javascript
React组件中的this的具体使用
2018/02/28 Javascript
vue.js数据绑定操作详解
2018/04/23 Javascript
vue-cli和v-charts实现可视化图表过程解析
2019/10/08 Javascript
vue 实现单选框设置默认选中值
2019/11/07 Javascript
vue-resource:jsonp请求百度搜索的接口示例
2019/11/09 Javascript
typescript配置alias的详细步骤
2020/08/12 Javascript
vue element-ui中table合计指定列求和实例
2020/11/02 Javascript
[42:32]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第二场 11.27
2020/12/01 DOTA
使用Python爬取最好大学网大学排名
2018/02/24 Python
Python实现的求解最大公约数算法示例
2018/05/03 Python
django admin组件使用方法详解
2019/07/19 Python
Python集合操作方法详解
2020/02/09 Python
python实现录屏功能(亲测好用)
2020/03/02 Python
英国No.1文具和办公用品在线:Euroffice
2016/09/21 全球购物
英国女士家居服网站:hush
2017/08/09 全球购物
当当网软件测试笔试题
2015/11/24 面试题
食品安全检查制度
2014/02/03 职场文书
计划生育标语
2014/06/23 职场文书
竞选学委演讲稿
2014/09/13 职场文书
晚会开场白和结束语
2015/05/29 职场文书
超市店长竞聘书
2015/09/15 职场文书