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者的疑难问答(1)
Oct 09 PHP
linux下删除7天前日志的代码(php+shell)
Jan 02 PHP
使用JSON实现数据的跨域传输的php代码
Dec 20 PHP
PHP转换文件夹下所有文件编码的实现代码
Jun 06 PHP
PHP框架Laravel学习心得体会
Oct 28 PHP
PHP编写RESTful接口的方法
Feb 21 PHP
PHP正则获取页面所有图片地址
Mar 23 PHP
PHP yii实现model添加默认值的方法(两种方法)
Nov 10 PHP
php生成毫秒时间戳的实例讲解
Sep 22 PHP
PHP排序二叉树基本功能实现方法示例
May 26 PHP
laravel5.0在linux下解决.htaccess无效和去除index.php的问题
Oct 16 PHP
PHP+MySql实现一个简单的留言板
Jul 19 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
一个连接两个不同MYSQL数据库的PHP程序
2006/10/09 PHP
基于PHP读取TXT文件向数据库导入海量数据的方法
2013/04/23 PHP
国外十大最流行的PHP框架排名
2013/07/04 PHP
php程序内部post数据的方法
2015/03/31 PHP
使用PHPStorm+XDebug搭建单步调试环境
2017/11/19 PHP
共享自己写一个框架DreamScript
2007/01/20 Javascript
js实现iframe自动自适应高度的方法
2015/02/17 Javascript
jQuery中animate动画第二次点击事件没反应
2015/05/07 Javascript
AngularJs Javascript MVC 框架
2016/06/20 Javascript
Chrome不支持showModalDialog模态对话框和无法返回returnValue问题的解决方法
2016/10/30 Javascript
node.js 抓取代理ip实例代码
2017/04/30 Javascript
JS库中的Particles.js在vue上的运用案例分析
2017/09/13 Javascript
D3.js实现拓扑图的示例代码
2018/06/30 Javascript
jquery获取img的src值实例介绍
2019/01/16 jQuery
微信小程序 弹窗输入组件的实现解析
2019/08/12 Javascript
关于ES6尾调用优化的使用
2020/09/11 Javascript
[45:52]完美世界DOTA2联赛PWL S3 Forest vs INK ICE 第二场 12.09
2020/12/12 DOTA
dataframe 按条件替换某一列中的值方法
2019/01/29 Python
python中从for循环延申到推导式的具体使用
2019/11/29 Python
Python StringIO及BytesIO包使用方法解析
2020/06/15 Python
浅谈pandas dataframe对除数是零的处理
2020/07/20 Python
python写文件时覆盖原来的实例方法
2020/07/22 Python
python中把元组转换为namedtuple方法
2020/12/09 Python
Python 里最强的地图绘制神器
2021/03/01 Python
canvas 实现 github404动态效果的示例代码
2017/11/15 HTML / CSS
英国手机零售商:Carphone Warehouse
2018/06/06 全球购物
什么是TCP/IP
2014/07/27 面试题
客服主管岗位职责
2013/12/13 职场文书
优秀教师工作感言
2014/02/16 职场文书
高校师德师风自我剖析材料
2014/09/29 职场文书
中学总务处工作总结
2015/08/12 职场文书
Python 流媒体播放器的实现(基于VLC)
2021/04/28 Python
Python实现列表拼接和去重的三种方式
2021/07/02 Python
Python实现制作销售数据可视化看板详解
2021/11/27 Python
windows安装 redis 6.2.6最新步骤详解
2022/04/26 Redis
介绍一下28个JS常用数组方法
2022/05/06 Javascript