标签:

/**   转http://www.oschina.net/code/snippet_1392428_54532     谢谢 php_fangting

* @param $total [你要发的红包总额]

* @param int $num [发几个]

* @return array[生成红包金额]

*/

function getRedGift($total, $num = 10)

{

$min = 0.01;

$wamp = array();

$returnData = array();

for ($i = 1; $i < $num; ++$i) {

$safe_total = ($total - ($num - $i) * $min) / ($num - $i); //红包金额的最大值

if ($safe_total < 0) break;

$money = @mt_rand($min * 100, $safe_total * 100) / 100;//随机产生一个红包金额

$total = $total - $money;//剩余红包总额

$wamp[$i] = round($money, 2);//保留两位有效数字

}

$wamp[$i] = round($total, 2);

$returnData[‘MoneySum‘] = $wamp;

$returnData[‘newTotal‘] = array_sum($wamp);

return $returnData;

}

//测试

$data = getRedGift(100, 10);

print_r($data);

//result:

/*

Array

(

[1] => 8.7

[2] => 10.09

[3] => 6.23

[4] => 6.87

[5] => 0.47

[6] => 3.12

[7] => 7.52

[8] => 12.21

[9] => 20.53

[10] => 24.26

)*/

public function rands($total=0, $num=3, $bonus_type=1)

{

$m = $total;

// $total=10;//红包总额

//$num=8;// 分成8个红包,支持8人随机领取

$min=0.01;//每个人最少能收到0.01元

$res = array();

for ($i=1;$i

{

$safe_total = ($total-($num-$i)*$min)/($num-$i);//随机安全上限

$money = mt_rand($min*100,$safe_total*100)/100;

$total = bcsub($total, $money, 2);

$res[] = $money;

}

$res[]=  $m - array_sum($res);

return $res;

}

public function hongbaoAction()

{

// 发3个拼手气红包,总金额是100元

for ($i = 0 ;$i< 10000; $i++)

{

$bonus_items  = $this->rands(100, rand(3, 60), 1);

// 查看生成的红包

$arr = array();

$arr[‘typeid‘] = $bonus_items[0];

$arr[‘nums‘]= $bonus_items[1];

$arr[‘change_nums‘] = $bonus_items[2];

$arr[‘dateline‘] = array_sum($bonus_items);// 校验总金额是不是正确,看看微信有没有坑我们的钱

$this->mainModel->test($arr);

unset($arr, $bonus_items);

}

}

标签:

php红包退回通知,php红包相关推荐

  1. php红包退回通知,PHP红包算法类(已运用实际项目)

    需求背景 笔者在实际项目中需要用到抢红包这么一个功能,需求看起来很简单--写一个函数,根据金额和需要分发的红包个数结合随机数返回一个红包数组就成. 开始我也这么看,但到自己动手写这个所谓的函数时才发现 ...

  2. php红包退回通知,PHP红包算法

    PHP红包算法 玩微信都喜欢抢微信红包,那么大家了解过PHP红包算法是怎么样的'吗?下面小编为大家解答一下,希望能帮到您! 算法原理如下 /* * 获取随机红包 * min * min(n-1) &l ...

  3. php红包退回通知,php 微信红包 返回问题

    已经拿到了用户的 openid ,但是返回这里一直有问题,虽然说成功,但是微信后台一直没有交易记录 下面的代码是我调试的代码 curl_setopt($ch,CURLOPT_POST, 1); cur ...

  4. php微信商务平台 红包调用,微信平台红包接口怎么调用?微信支付商户平台红包发放接口调用图文教程[多图]...

    微信平台红包接口怎么调用?估计很多商家都还不太会操作吧?别着急,下面是友情小编搜集相关资料整理出来的微信支付商户平台红包发放接口调用图文教程,希望可以帮到大家,现在就跟随小编一起看看吧!!! 首先,商 ...

  5. 企业微信发送企业红包java_发放企业红包

    API接口协议 发放规则: 发送频率限制---默认1800/min 发送个数上限---默认1800/min 场景金额限制---默认红包金额为1-200元,如有需要,可前往商户平台进行设置和申请 其他限 ...

  6. php定时红包,PHP随机红包和等额红包的简单实现

    $amount = 1; // 红包总金额 $packageCount = 30; // 红包总个数 $randomFlag = true; // 金额是否随机 $grantedAmount = 0; ...

  7. PHP实现微信随机红包算法和微信红包的架构设计简介

    微信红包的架构设计简介: 原文:https://www.zybuluo.com/yulin718/note/93148 @来源于QCon某高可用架构群整理,整理朱玉华. 背景:有某个朋友在朋友圈咨询微 ...

  8. php 红包生成算没法,红包生成算法的需求(PHP版本)

    预先生成所有的红包还是一个请求随机生成一个红包,这个红包的最大和最小值都可以钱数,而且是最大红包的数量也可以控制个数! 简单来说,就是把一个大整数m分解(直接以"分为单位,如1元即100)分 ...

  9. 较于微信红包,支付宝AR红包是个好产品吗?

    2016/12/26阅读 7.5k 评论 6收藏 23 零基础学产品,BAT产品总监带,2天线下集训+1年在线课程,全面掌握优秀产品经理必备技能.了解详情 好的产品是以用户目标为导向,能帮助用户更好的 ...

最新文章

  1. 2021年春季学期-信号与系统-第四次作业参考答案-第十二小题
  2. centos7.7安装mysql8.0_centos7.7 安装 mysql8.0.20
  3. 【深度学习入门到精通系列】什么是消融实验(Ablation experiment)
  4. Asp.net在线压缩和解压缩简单实现(附项目源码)
  5. 【Python】matplotlib.pyplot 标题换行
  6. python3网络爬虫(4):python3安装Scrapy
  7. Fabric node sdk 1.4简明教程
  8. 入侵微博服务器刷流量,开发者获刑 5 年;马化腾重回中国首富;支持 M1 芯片,VS Code 1.54 发布 | 极客头条...
  9. 联网生活方式下,消费者的7大关键需求
  10. Java调用Lua(转)
  11. Linux进阶之使用Oh-My-Zsh打造炫酷终端
  12. 微信小程序时间轴demo_微信小程序 - 时间轴(组件)
  13. 制作1G的U盘启动盘
  14. 前端html和js编码设置
  15. 你可知用FlexGrid做开发,轻松处理百万级表格数据
  16. 技师学院计算机老师,技师学院计算机工程系组织开展观摩课活动
  17. 聊一聊那些应该了解的大佬(飞控,人工智能方向)
  18. 基于深度神经网络的社交媒体用户级心理压力检测
  19. 未来的计算机绘画图片,电脑绘画——为想象力插上科技的翅膀 二十中附校科技社团电脑绘画作品展...
  20. Ubuntu18.04+ROS melodic 控制UR5机器人(持续更新)

热门文章

  1. 心得 ~ 使用 zlib库 解压缩 zip文件
  2. -bash: /usr/bin/rm: 参数列表过长
  3. php 7.1安装sockets,Centos7 下 PHP 添加缺少的组件 sockets 和 openssl
  4. Java 哈密顿距离
  5. 【智能驾驶】汽车智能化行业深度报告
  6. 某机主存容量为4Nx16位,且存储字长等于指令字长,若该机指令系统可完成108种操作,操作码位数固定,且具有直接、间接、变址、基址、相对、立即等六种寻址方式
  7. 不撞南墙不回头-深度优先搜索算法
  8. ArcGIS问题:dbf shp shx sbn sbx mdb adf等类型的文件的解释
  9. 不容错过 | 超干货免费公开课「EOS区块链应用开发入门实战」,文末送书!
  10. 使用CSplitterWnd分隔窗口,左视图控制,右视图显示