先說要點:
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 );