この記事では、PHP の赤封筒開封アルゴリズムについて簡単に分析します。これには一定の参考値があります。困っている友人は参考にしてください。すべての人に役立つことを願っています。
PHP レッド パケット分割アルゴリズム
コードは次のとおりです:
/** * 拆分红包 * @param SendRedPackageRequest $request * @return array */ protected function spitMoney(SendRedPackageRequest $request) { $result = []; $reamingMoney = $request->money; for ($i = $request->count; $i >= 1; $i--) { if ($i === 1) { $result[] = round($reamingMoney, 2); $reamingMoney = 0; } else { $average = round(bcdiv($reamingMoney, $i), 2); //平均值 $amount = round(mt_rand(1, $average * 199) / 100, 2); $reamingMoney = doubleval(bcsub($reamingMoney, $amount)); $result[] = round($amount, 2); } } return $result; }
ロジックは比較的単純で、分割量と分割数を入力します。
最初に分割する数量をサイクルし、最後の数量である場合は、残りの金額をすべてその数量に入れます。
## そうでない場合は、残りの金額 (最初の数量の残りの金額) を受け取ります。サイクル = 合計量) を残りの時間で割って平均を取得し、ランダムに最小の 0.01 と平均 * 2 を選択して、残りの量を更新するだけです。 このアルゴリズムは WeChat の赤い封筒分割アルゴリズムをシミュレートしますが、これは事前に計算されて保存されており、WeChat は毎回動的に計算します。 推奨学習: 「PHP ビデオ チュートリアル 」
以上がPHP 赤封筒開封アルゴリズムの簡単な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。