/**
* 发红包
* */
function red($total, $num)
{
$total *= 100;
$tmp = [];
$arr = [];
for (; $num > 1; $num--) {
$p = mt_rand(1, $total);
while (in_array($p, $tmp) || $p == $total) {
$p = mt_rand(1, $total);
}
$tmp[] = $p;
}
sort($tmp);
for ($i = 0; $i < count($tmp); $i++) {
if (0 == $i) {
$ins = $tmp[0];
} else {
$ins = $tmp[$i] - $tmp[$i - 1];
if ($i == (count($tmp) - 1)) {
$ins = $total - $tmp[$i];
}
}
$arr[] = number_format($ins / 100, 2);
}
sort($arr);
// echo array_sum($arr);
return $arr;
}
var_dump(red(100, 8));
附上另一种解法:添加链接描述