この記事では、PHP で実装されたランダムな赤いエンベロープ アルゴリズムを主に紹介し、その原理、実装方法、および関連する注意事項をサンプルの形で分析します。みんな。
1. 全体の設計
アルゴリズムはたくさんありますが、自分で選択できます。 主な「アーキテクチャ」は次のようなもので、redis decr() コマンドを使用してフローを制限し、mysql を使用します。さまざまな必要なデータを記録します
2. 赤封筒のアルゴリズム
簡単のため、各赤封筒の金額は (残量/残数) であると仮定します。の赤い封筒)*2、最初に各人に 1 つの Bean を事前に割り当てる必要があります
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
2 番目の は、単純に展開し、各赤い封筒の最大量封筒は: (残量/残りの赤い封筒の数)*3; ただし、毎回少なくとも 2 枚の赤い封筒を送る必要があります
3 番目の方法 は、ランダムにいくつかの数字を生成し、直線を分割しますいくつかのセグメントに分割し、各セグメントの長さ (これは大きく変動し、あまり平均的ではありません。各赤い封筒のサイズが制限されている場合は、さらに面倒になります)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
4 つ目
:
なぜなら各人が少なくとも 1 つの Bean を持っている場合、Bean の数がランダムに生成されるたびに、残りの Bean 数 * 1 Bean を予約する必要があります。これらの必要な残りの Bean 数を削除した後、残りの Bean 数の平均を使用します。今回は Bean の数をランダムに生成するための最大値として Bean を使用します
関連する推奨事項:
PHP が固定赤いエンベロープとランダムな赤いエンベロープ アルゴリズムを実装する方法の詳細な説明 (図)
php はランダムな赤いエンベロープ アルゴリズムを生成します
以上がPHPランダムレッドエンベロープ関数の実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。