请问php中如何实现微信红包随机分配与平均分配算法?
有没有类似的代码
网友回复
很简单,随机红包php算法代码
<?php function rand_money($total_bean, $total_packet) { $min_bean = 1; $max_bean = 5000; $range = 2; $total_bean = $total_bean - $total_packet * $min_bean; //每个人预留一个最小值 $list = []; $min = 1; while(count($list) < $total_packet-1){ $max = floor($total_bean / $total_packet) * $range; $bean = rand($min, $max); if ($bean <= $max_bean - 1) { $list[] = $bean; $total_bean -= $bean; } } $list[] = $total_bean;//剩余的金豆作为最后一个红包 //合并 foreach ($list as $k => $v) { $list[$k] += $min_bean; } return $list; } $ret=rand_money(100,10);//100分,我们分给10个人 var_dump($ret);//每个人的分钱数 echo array_sum($ret);//分钱后的钱总和平均算法就直接用除以,这里要有判断,是否可以整除
<?php function aver_money($total, $nums) { $ret = $total / $nums; if (is_int($ret)) { return $ret; } else { throw new Exception("抛出异常"); } } echo aver_money(100,4);