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个红包
时间: 2024-10-12 21:32:47