先说要点:
1、随机分配的 随机范围一定要算好。
2、由于精确到0.01;所以rand取随机数的时候要*100.
3、最后那个人直接把余额包起来就可以了。
/*
* $money红包金额
* $num人数
* $type为0是平均分配,不为0则为随机分配
* $flag标识符
*/
function check($money, $num, $type) {
$min = 0.01;
$max = 200;
$rand_money = 0;
$flag = true;
if ($money > $max) {
echo "金额不能大于200";
$flag = false;
}
if ($money < $min * $num) {
echo "每个红包不能低于0.01";
$flag = false;
}
if ($flag) {
Red_Packet ( $money, $num, $type );
}
}
function Red_Packet($money, $num, $type) {
$min = 0.01;
if ($type) {
for($i = 1; $i < $num; $i ++) {
$rand_money = ($money - $min * ($num - $i)) / ($num - $i); // 随机范围
$red_packet = rand ( $min * 100, $rand_money * 100 ) / 100;
$money = $money - $red_packet;
// var_dump($red_packet);
echo '第' . $i . '个红包:' . $red_packet . ' 元<br>';
}
echo '第' . $num . '个红包:' . $money . ' 元<Br>'; // 最后那个直接独自一个红包
} else {
$money = $money / $num;
echo '每个红包为' . $money . ' 元<br>';
}
}
check ( 10, 10, 1 );