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 不错的学习资料
Feb 06 PHP
php数据库连接时容易出错的特殊符号问题
Sep 01 PHP
PHP 函数执行效率的小比较
Oct 17 PHP
CI框架装载器Loader.php源码分析
Nov 04 PHP
php访问数组最后一个元素的函数end()用法
Mar 18 PHP
分享自定义的几个PHP功能函数
Apr 15 PHP
两种php给图片加水印的实现代码
Apr 18 PHP
理解PHP中的Session及对Session有效期的控制
Jan 08 PHP
Yii视图CGridView列表用法实例分析
Jul 12 PHP
解决PHP程序运行时:Fatal error: Maximum execution time of 30 seconds exceeded in的错误提示
Nov 25 PHP
PHP获取路径和目录的方法总结【必看篇】
Mar 04 PHP
Laravel框架运行出错提示RuntimeException No application encryption key has been specified.解决方法
Apr 02 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中在数据库中保存Checkbox数据(2)
2006/10/09 PHP
BBS(php &amp; mysql)完整版(四)
2006/10/09 PHP
PHP概率计算函数汇总
2015/09/13 PHP
PHP函数引用返回的实例详解
2016/09/11 PHP
浅谈PHP拦截器之__set()与__get()的理解与使用方法
2016/10/18 PHP
PHP简单装饰器模式实现与用法示例
2017/06/22 PHP
Laravel实现定时任务的示例代码
2017/08/10 PHP
ThinkPHP防止重复提交表单的方法实例分析
2018/05/10 PHP
laravel-admin 在列表页添加自定义按钮的例子
2019/09/30 PHP
10个新的最有前途的JavaScript框架
2009/03/12 Javascript
prototype 中文参数乱码解决方案
2009/11/09 Javascript
页面载入结束自动调用js函数示例
2013/09/23 Javascript
JavaScript中获取高度和宽度函数总结
2014/10/08 Javascript
Vue实现自带的过滤器实例
2017/03/09 Javascript
vue-cli与webpack处理静态资源的方法及webpack打包的坑
2018/05/15 Javascript
react 应用多入口配置及实践总结
2018/10/17 Javascript
ES6 对象的新功能与解构赋值介绍
2019/02/05 Javascript
Vue中错误图片的处理的实现代码
2019/11/07 Javascript
详解Vue 单文件组件的三种写法
2020/02/19 Javascript
微信小程序pinker组件使用实现自动相减日期
2020/05/07 Javascript
Vue性能优化的方法
2020/07/30 Javascript
Python实现的多线程端口扫描工具分享
2015/01/21 Python
Python脚本判断 Linux 是否运行在虚拟机上
2015/04/25 Python
Python基于TCP实现会聊天的小机器人功能示例
2018/04/09 Python
Python 多线程不加锁分块读取文件的方法
2018/12/11 Python
Tensorflow分类器项目自定义数据读入的实现
2019/02/05 Python
python 通过SSHTunnelForwarder隧道连接redis的方法
2019/02/19 Python
python实现密码强度校验
2020/03/18 Python
pandas 像SQL一样使用WHERE IN查询条件说明
2020/06/05 Python
阿玛尼美国官方网站:Armani.com
2016/11/25 全球购物
介绍一下Java的安全机制
2012/06/28 面试题
工作疏忽检讨书
2014/01/25 职场文书
《孙权劝学》教学反思
2014/04/23 职场文书
基层工作经历证明
2015/06/19 职场文书
python3+PyQt5+Qt Designer实现界面可视化
2021/06/10 Python
分析ZooKeeper分布式锁的实现
2021/06/30 Java/Android