php定时红包,PHP随机红包和等额红包的简单实现
$amount = 1; // 紅包總金額
$packageCount = 30; // 紅包總個數
$randomFlag = true; // 金額是否隨機
$grantedAmount = 0; // 已領取的金額
$averageAmount = (float)bcdiv($amount, $packageCount, 2);
if ($averageAmount < 0.01) {
exit("紅包個數不能超過 " . $amount / 0.01 . " 個。\n");
}
echo "================== 發包開始,總共 {$amount} 個紅包,發給 {$packageCount} 個人。 ==================\n";
for ($i = 1; $i <= $packageCount; $i++) {
if ($randomFlag) { // 隨機分
$leftAmount = $amount - $grantedAmount;
$leftPackage = $packageCount - $i + 1;
$averageAmount = (float)bcdiv($leftAmount, $leftPackage, 2);
$random = (float)bcdiv(mt_rand(0, ($averageAmount * 100 - 1)), 100, 2); // 邊界
$changeFunction = mt_rand(0, 1) ? 'bcadd' : 'bcsub';
$shouldGetAmount = $i == $packageCount ? bcsub($amount, $grantedAmount, 2) : $changeFunction($averageAmount, $random, 2);
} else { // 平均分
$shouldGetAmount = $i == $packageCount ? bcsub($amount, $grantedAmount, 2) : $averageAmount;
}
$grantedAmount = bcadd($grantedAmount, $shouldGetAmount, 2);
echo "你是第 {$i} 個領取紅包的人,領到 {$shouldGetAmount} 個紅包。【當前共發了 {$grantedAmount} 個紅包】\n";
}
echo "================== 發包結束,總共發了 {$grantedAmount} 個紅包。 ==================\n";
echo "end。 \n";
運行結果
================== 發包開始,總共 1 個紅包,發給 30 個人。 ==================
你是第 1 個領取紅包的人,領到 0.03 個紅包。【當前共發了 0.03 個紅包】
你是第 2 個領取紅包的人,領到 0.03 個紅包。【當前共發了 0.06 個紅包】
你是第 3 個領取紅包的人,領到 0.01 個紅包。【當前共發了 0.07 個紅包】
你是第 4 個領取紅包的人,領到 0.02 個紅包。【當前共發了 0.09 個紅包】
你是第 5 個領取紅包的人,領到 0.03 個紅包。【當前共發了 0.12 個紅包】
你是第 6 個領取紅包的人,領到 0.03 個紅包。【當前共發了 0.15 個紅包】
你是第 7 個領取紅包的人,領到 0.05 個紅包。【當前共發了 0.20 個紅包】
你是第 8 個領取紅包的人,領到 0.03 個紅包。【當前共發了 0.23 個紅包】
你是第 9 個領取紅包的人,領到 0.05 個紅包。【當前共發了 0.28 個紅包】
你是第 10 個領取紅包的人,領到 0.05 個紅包。【當前共發了 0.33 個紅包】
你是第 11 個領取紅包的人,領到 0.03 個紅包。【當前共發了 0.36 個紅包】
你是第 12 個領取紅包的人,領到 0.01 個紅包。【當前共發了 0.37 個紅包】
你是第 13 個領取紅包的人,領到 0.03 個紅包。【當前共發了 0.40 個紅包】
你是第 14 個領取紅包的人,領到 0.01 個紅包。【當前共發了 0.41 個紅包】
你是第 15 個領取紅包的人,領到 0.02 個紅包。【當前共發了 0.43 個紅包】
你是第 16 個領取紅包的人,領到 0.05 個紅包。【當前共發了 0.48 個紅包】
你是第 17 個領取紅包的人,領到 0.05 個紅包。【當前共發了 0.53 個紅包】
你是第 18 個領取紅包的人,領到 0.03 個紅包。【當前共發了 0.56 個紅包】
你是第 19 個領取紅包的人,領到 0.05 個紅包。【當前共發了 0.61 個紅包】
你是第 20 個領取紅包的人,領到 0.03 個紅包。【當前共發了 0.64 個紅包】
你是第 21 個領取紅包的人,領到 0.01 個紅包。【當前共發了 0.65 個紅包】
你是第 22 個領取紅包的人,領到 0.01 個紅包。【當前共發了 0.66 個紅包】
你是第 23 個領取紅包的人,領到 0.03 個紅包。【當前共發了 0.69 個紅包】
你是第 24 個領取紅包的人,領到 0.02 個紅包。【當前共發了 0.71 個紅包】
你是第 25 個領取紅包的人,領到 0.01 個紅包。【當前共發了 0.72 個紅包】
你是第 26 個領取紅包的人,領到 0.09 個紅包。【當前共發了 0.81 個紅包】
你是第 27 個領取紅包的人,領到 0.05 個紅包。【當前共發了 0.86 個紅包】
你是第 28 個領取紅包的人,領到 0.04 個紅包。【當前共發了 0.90 個紅包】
你是第 29 個領取紅包的人,領到 0.09 個紅包。【當前共發了 0.99 個紅包】
你是第 30 個領取紅包的人,領到 0.01 個紅包。【當前共發了 1.00 個紅包】
================== 發包結束,總共發了 1.00 個紅包。 ==================
end。
總結
以上是生活随笔為你收集整理的php定时红包,PHP随机红包和等额红包的简单实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: bios网络堆栈要不要开启?(ucore
- 下一篇: php语言cookie,如何创建一个简单