微信红包随机生成算法php版


Posted in PHP onJuly 21, 2016

想了想,自己写写php版的微信红包随机生成算法,能不能实现类似的功能(其实也不敢说是算法)。
// $bonus_total 红包总金额
// $bonus_count 红包个数
// $bonus_type 红包类型 1=拼手气红包 0=普通红包

function randBonus($bonus_total=0, $bonus_count=3, $bonus_type=1){
  $bonus_items  = array(); // 将要瓜分的结果
  $bonus_balance = $bonus_total; // 每次分完之后的余额
  $bonus_avg   = number_format($bonus_total/$bonus_count, 2); // 平均每个红包多少钱
  $i       = 0;
  while($i<$bonus_count){
    if($i<$bonus_count-1){
      $rand      = $bonus_type?(rand(1, $bonus_balance*100-1)/100):$bonus_avg; // 根据红包类型计算当前红包的金额
      $bonus_items[] = $rand;
      $bonus_balance -= $rand;
    }else{
      $bonus_items[] = $bonus_balance; // 最后一个红包直接承包最后所有的金额,保证发出的总金额正确
    }
    $i++;
  }
  return $bonus_items;
}

好吧,我们现在来体验一下

// 发3个拼手气红包,总金额是100元
$bonus_items  = randBonus(100, 3, 1);
// 查看生成的红包
var_dump($bonus_items);
// 校验总金额是不是正确,看看微信有没有坑我们的钱
var_dump(array_sum($bonus_items));

另一个使用数组实现的版本,原理差不多:

function sendRandBonus($total=0, $count=3, $type=1){
  if($type==1){
    $input     = range(0.01, $total, 0.01);
    if($count>1){
      $rand_keys = (array) array_rand($input, $count-1);
      $last    = 0;
      foreach($rand_keys as $i=>$key){
        $current  = $input[$key]-$last;
        $items[]  = $current;
        $last    = $input[$key];
      }
    }
    $items[]    = $total-array_sum($items);
  }else{
    $avg      = number_format($total/$count, 2);
    $i       = 0;
    while($i<$count){
      $items[]  = $i<$count-1?$avg:($total-array_sum($items));
      $i++;
    }
  }
  return $items;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
谈谈PHP语法(4)
Oct 09 PHP
php5.2时间相差8小时
Jan 15 PHP
PHP 数据库树的遍历方法
Feb 06 PHP
curl实现站外采集的方法和技巧
Jan 31 PHP
ThinkPHP访问不存在的模块跳转到404页面的方法
Jun 19 PHP
windows下配置apache+php+mysql时出现问题的处理方法
Jun 20 PHP
PHP命名空间(namespace)的使用基础及示例
Aug 18 PHP
使用GDB调试PHP代码,解决PHP代码死循环问题
Mar 02 PHP
php微信公众平台开发类实例
Apr 01 PHP
PHP ajax 异步执行不等待执行结果的处理方法
May 27 PHP
PHP实现数据库的增删查改功能及完整代码
Apr 18 PHP
thinkphp3.2同时连接两个数据库的简单方法
Aug 13 PHP
php集成动态口令认证
Jul 21 #PHP
Thinkphp3.2.3整合phpqrcode生成带logo的二维码
Jul 21 #PHP
微信随机生成红包金额算法php版
Jul 21 #PHP
PHP简单读取PDF页数的实现方法
Jul 21 #PHP
基于PHP微信红包的算法探讨
Jul 21 #PHP
php中preg_replace_callback函数简单用法示例
Jul 21 #PHP
PHP获取客户端及服务器端IP的封装类
Jul 21 #PHP
You might like
WINXP下apache+php4+mysql
2006/11/25 PHP
PHP 事件机制(2)
2011/03/23 PHP
php 数组使用详解 推荐
2011/06/02 PHP
单点登录 Ucenter示例分析
2013/10/29 PHP
php实现专业获取网站SEO信息类实例
2015/04/02 PHP
php实现批量删除挂马文件及批量替换页面内容完整实例
2016/07/08 PHP
thinkPHP自动验证机制详解
2016/12/05 PHP
php中字符串和整数比较的操作方法
2019/06/06 PHP
JavaScript 对象模型 执行模型
2009/12/06 Javascript
JavaScript 序列化对象实现代码
2009/12/18 Javascript
深入理解JavaScript系列(8) S.O.L.I.D五大原则之里氏替换原则LSP
2012/01/15 Javascript
Js实现动态添加删除Table行示例
2014/04/14 Javascript
Linux下使用jq友好的打印JSON技巧分享
2014/11/18 Javascript
jQuery判断数组是否包含了指定的元素
2015/03/10 Javascript
JS获得图片alt信息的方法
2015/04/01 Javascript
Bootstrap和Java分页实例第二篇
2016/12/23 Javascript
jQuery实现拖动剪裁图片作为头像
2016/12/28 Javascript
JS获取子、父、兄节点方法小结
2017/08/14 Javascript
深入理解Vue 的条件渲染和列表渲染
2017/09/01 Javascript
python通过装饰器检查函数参数数据类型的方法
2015/03/13 Python
Django权限机制实现代码详解
2018/02/05 Python
Python包,__init__.py功能与用法分析
2020/01/07 Python
解决更改AUTH_USER_MODEL后出现的问题
2020/05/14 Python
Python 私有属性和私有方法应用场景分析
2020/06/19 Python
中职应届生会计求职信
2013/10/23 职场文书
逃课上网检讨书
2014/02/20 职场文书
青春励志演讲稿
2014/04/29 职场文书
四风问题自我剖析材料
2014/10/07 职场文书
院系推荐意见
2015/06/05 职场文书
货款欠条范本
2015/07/03 职场文书
师德师风心得体会(2016精选篇)
2016/01/12 职场文书
高中数学课堂教学反思
2016/02/18 职场文书
《迟到》教学反思
2016/02/24 职场文书
在校大学生才艺比赛策划书怎么写?
2019/08/26 职场文书
JavaScript数组 几个常用方法总结
2021/11/11 Javascript
instantclient客户端 连接oracle数据库
2022/04/26 Oracle