首页 > 代码库 > PHP随机红包算法

PHP随机红包算法

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随机红包算法