PHP实现微信红包金额拆分试玩的算法示例

 更新时间:2018年04月07日 11:19:04   作者:斌哥_  
本篇文章主要介绍了PHP实现微信红包金额拆分试玩的算法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

本文介绍了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把小数转成整数3种方法

    PHP把小数转成整数3种方法

    这篇文章主要介绍了PHP把小数转成整数3种方法,实际上是使用的PHP自带的3个函数,分别是floor、ceil和round,需要的朋友可以参考下
    2014-06-06
  • php分享朋友圈的实现代码

    php分享朋友圈的实现代码

    这篇文章主要为大家详细介绍了php分享朋友圈的实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-02-02
  • swoole锁的机制代码实例讲解

    swoole锁的机制代码实例讲解

    这篇文章主要介绍了swoole锁的机制代码实例讲解,对于锁的介绍讲解的很清晰,有感兴趣的同学可以学习下
    2021-03-03
  • getJSON跨域SyntaxError问题分析

    getJSON跨域SyntaxError问题分析

    这篇文章主要介绍了getJSON跨域SyntaxError问题分析,需要的朋友可以参考下
    2014-08-08
  • php缩小png图片不损失透明色的解决方法

    php缩小png图片不损失透明色的解决方法

    png图片如果带了透明色按照jpg的方式来缩小,就会造成透明色损失。那么如何处理才能保存透明色呢?下面的代码就可以解决这个问题
    2013-12-12
  • typecho插件编写教程(五):核心代码

    typecho插件编写教程(五):核心代码

    这篇文章主要介绍了typecho插件编写教程(五):核心代码,本文讲解了完整的插件核心代码的示例,需要的朋友可以参考下
    2015-05-05
  • PHP设计模式之适配器模式代码实例

    PHP设计模式之适配器模式代码实例

    这篇文章主要介绍了PHP设计模式之适配器模式代码实例,本文讲解了目标、角色、应用场景、优势等内容,并给出代码实例,需要的朋友可以参考下
    2015-05-05
  • Laravel中错误与异常处理的用法示例

    Laravel中错误与异常处理的用法示例

    异常抛出在开发中错误处理是非常重要的,下面这篇文章主要给大家介绍了关于Laravel中错误与异常处理用法的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧
    2018-09-09
  • PHP文件操作简单介绍及函数汇总

    PHP文件操作简单介绍及函数汇总

    这篇文章主要介绍了PHP文件操作简单介绍及函数汇总,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-12-12
  • Yii2框架实现登录、退出及自动登录功能的方法详解

    Yii2框架实现登录、退出及自动登录功能的方法详解

    这篇文章主要介绍了Yii2框架实现登录、退出及自动登录功能的方法,结合实例形式详细分析了Yii2框架实现登录、退出及自动登录功能的原理、实现方法与相关操作注意事项,需要的朋友可以参考下
    2017-10-10

最新评论