/**
* 发红包
* */
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));
附上另一种解法:添加链接描述
本文介绍了一种用于在线社交平台的发红包算法实现。通过随机分配总金额到指定数量的红包中,确保每个红包金额随机且总额不变。文章提供了具体的PHP代码实现,并探讨了算法的公平性和效率。
361

被折叠的 条评论
为什么被折叠?



