很简单,随机红包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);
网友回复