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 4.2书写安全的脚本
Oct 09 PHP
PHP 中文处理技巧
Apr 25 PHP
实现获取http内容的php函数分享
Feb 16 PHP
php中获取主机名、协议及IP地址的方法
Nov 18 PHP
学习php设计模式 php实现模板方法模式
Dec 08 PHP
PHP判断FORM表单或URL参数来的数据是否为整数的方法
Mar 25 PHP
[原创]php简单隔行变色功能实现代码
Jul 09 PHP
PHP Ajax实现无刷新附件上传
Aug 17 PHP
浅谈PHP中的错误处理和异常处理
Feb 04 PHP
详解配置 Apache 服务器支持 PHP 文件的解析
Feb 15 PHP
PHPExcel中文帮助手册|PHPExcel使用方法(分享)
Jun 09 PHP
CMSPRESS 10行代码搞定 PHP无限级分类2
Mar 30 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中对数据库操作的封装
2006/10/09 PHP
PHP 字符串加密函数(在指定时间内加密还原字符串,超时无法还原)
2010/04/28 PHP
Could not load type System.ServiceModel.Activation.HttpModule解决办法
2012/12/29 PHP
PHP判断网络文件是否存在的方法
2015/03/12 PHP
thinkphp整合系列之极验滑动验证码geetest功能
2019/06/18 PHP
jquery 实现的全选和反选
2009/04/15 Javascript
JQuery 学习笔记 element属性控制
2009/07/23 Javascript
用Javascript 和 CSS 实现脚注(Footnote)效果
2009/09/09 Javascript
Jquery中增加参数与Json转换代码
2009/11/20 Javascript
写了10年的Javascript也未必全了解的连续赋值运算
2011/03/25 Javascript
JavaScript调试技巧之console.log()详解
2014/03/19 Javascript
JavaScript监听文本框回车事件并过滤文本框空格的方法
2015/04/16 Javascript
JavaScript的jQuery库中ready方法的学习教程
2015/08/14 Javascript
js判断日期时间有效性的方法
2015/10/24 Javascript
jQuery插件简单学习实例教程
2016/07/01 Javascript
基于jQuery ligerUI实现分页样式
2016/09/18 Javascript
AngularJs点击状态值改变背景色的实例
2017/12/18 Javascript
vue自定义tap指令及tap事件的实现
2018/09/18 Javascript
vue结合element-ui使用示例
2019/01/24 Javascript
小程序最新获取用户昵称和头像的方法总结
2019/09/23 Javascript
浅谈Layui的eleTree树式选择器使用方法
2019/09/25 Javascript
JS回调函数简单易懂的入门实例分析
2019/09/29 Javascript
js实现百度淘宝搜索功能
2020/02/17 Javascript
读取本地json文件,解析json(实例讲解)
2017/12/06 Python
Django如何使用第三方服务发送电子邮件
2019/08/14 Python
python2和python3实现在图片上加汉字的方法
2019/08/22 Python
使用python求解二次规划的问题
2020/02/29 Python
Python中的__init__作用是什么
2020/06/09 Python
CSS3中利用animation属性创建雪花飘落特效
2014/05/14 HTML / CSS
应届生法律顾问求职信
2013/11/19 职场文书
往来会计岗位职责
2013/12/19 职场文书
初三物理教学反思
2014/01/21 职场文书
求职个人评价范文
2014/04/09 职场文书
幼儿园评语大全
2014/04/17 职场文书
如何撰写一封出色的求职信
2014/04/27 职场文书
Win11任务栏太宽了怎么办?一招解决Win11任务栏太宽问题
2021/11/21 数码科技