function hongbao($money, $people, $min, $max)
{
$result = [];
for ($i=0; $i < $people; $i++) {
do {
// 1.进行本次分配
$result[$i] = mt_rand($min*100, $max*100) / 100;
// 2.本次分配后,剩余人数
$restPeople = $people - ($i+1);
// 3.本次分配后,剩余金钱
$restMoney = $money - array_sum(array_slice($result, 0, $i+1));
// 4.本次分配后,剩余金钱是否在合理范围? 不在则重新分配
} while ($restMoney > $restPeople * $max || $restMoney < $restPeople * $min);
}
return $result;
}
$result = hongbao(10,4, 2, 3);
// 验证
var_dump($result);
var_dump(array_sum($result));
输出结果: