码迷,mamicode.com
首页 > 编程语言 > 详细

PHP随机红包算法

时间:2017-01-14 15:57:34      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:div   span   多次   星期六   img   jpg   递归   cti   ima   

2017年1月14日 14:19:14 星期六

 简便起见, 用整数, 假设每个红包里边有x个糖豆

一种: 防微信, 每个红包的最大金额是: (剩余金额/剩余红包数)*2

 1 function randBean($total_bean, $total_packet)
 2 {
 3     $cp_total_bean = $total_bean;
 4     $cp_total_packet = $total_packet;
 5     
 6     $arr = [];
 7     $min = 1;
 8     while($total_packet > 1){
 9         $max = floor($total_bean / $total_packet) * 2;
10         $bean = rand($min, $max);
11         
12         $arr[] = $bean;
13         
14         $total_bean -= $bean;
15         $total_packet--;
16     }
17     
18     $arr[] = $total_bean;//剩余的豆作为最后一个红包
19     if ($total_bean == 0) { //防止出现最后一个红包金额为0的情况, 递归, 10万次中大概有1000多次出现这种情况
20         return randBean($cp_total_bean, $cp_total_packet);
21     } else {
22         return $arr;
23     }
24 }

技术分享

 

第二种, 对其简单扩展一下, 每个红包的最大金额是: (剩余金额/剩余红包数)*3; 但是要求每次最少发2个红包

 

PHP随机红包算法

标签:div   span   多次   星期六   img   jpg   递归   cti   ima   

原文地址:http://www.cnblogs.com/iLoveMyD/p/6285315.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!