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的autoLoad自动加载机制
Sep 27 PHP
浅析php中json_encode()和json_decode()
May 25 PHP
PHP实现图片压缩的两则实例
Jul 19 PHP
ThinkPHP中公共函数路径和配置项路径的映射分析
Nov 22 PHP
PHP实现RTX发送消息提醒的实例代码
Jan 03 PHP
PHP正则表达式匹配替换与分割功能实例浅析
Feb 04 PHP
Laravel框架中Blade模板的用法示例
Aug 30 PHP
PHP设计模式之装饰器模式实例详解
Feb 07 PHP
Laravel中的chunk组块结果集处理与注意问题
Aug 15 PHP
php设计模式之策略模式实例分析【星际争霸游戏案例】
Mar 26 PHP
php的单例模式及应用场景详解
Feb 27 PHP
WordPress多语言翻译插件 - WPML使用教程
Apr 01 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/03/16 PHP
PHP+FFMPEG实现将视频自动转码成H264标准Mp4文件
2014/09/24 PHP
些很实用且必用的小脚本代码
2006/06/26 Javascript
JavaScript 事件的一些重要说明
2009/10/25 Javascript
匹配任意字符的正则表达式写法
2010/04/29 Javascript
有关DOM元素与事件的3个谜题
2010/11/11 Javascript
Js切换功能的简单方法
2010/11/23 Javascript
基于JQuery的asp.net树实现代码
2010/11/30 Javascript
返回页面顶部top按钮通过锚点实现(自写)
2013/08/30 Javascript
JS的数组迭代方法
2015/02/05 Javascript
基于Jquery代码实现手风琴菜单
2015/11/19 Javascript
nodejs简单实现操作arduino
2016/09/25 NodeJs
解决Extjs下拉框不显示的问题
2017/06/21 Javascript
jquery实现联想词搜索框和搜索结果分页的示例
2018/10/10 jQuery
express框架下使用session的方法
2019/07/31 Javascript
vue.config.js常用配置详解
2019/11/14 Javascript
JavaScript undefined及null区别实例解析
2020/07/21 Javascript
[01:04:39]OG vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python实现class对象转换成json/字典的方法
2016/03/11 Python
Python手机号码归属地查询代码
2016/05/04 Python
python中reload(module)的用法示例详解
2017/09/15 Python
Python numpy 提取矩阵的某一行或某一列的实例
2018/04/03 Python
python 借助numpy保存数据为csv格式的实现方法
2018/07/04 Python
11个Python3字典内置方法大全与示例汇总
2019/05/13 Python
美国摩托车头盔、零件、齿轮及配件商店:Cycle Gear
2019/06/12 全球购物
如何将整数int转换成字串String
2014/03/21 面试题
奥巴马经典演讲稿
2014/09/13 职场文书
学校师德师风整改方案
2014/10/28 职场文书
2014年青年教师工作总结
2014/12/17 职场文书
单位介绍信格式
2015/01/31 职场文书
北大自主招生自荐信
2015/03/04 职场文书
2015教师个人工作总结范文
2015/03/31 职场文书
525心理健康活动总结
2015/05/08 职场文书
小学课改工作总结
2015/08/13 职场文书
SpringBoot生成License的实现示例
2021/06/16 Java/Android
使用Ajax实现无刷新上传文件
2022/04/12 Javascript