ホームページ >バックエンド開発 >PHPチュートリアル >PHP宝くじ、ランダム広告アルゴリズム
まずバックエンド PHP プロセスを完了します。PHP の主な仕事は、フロントエンド ページがクリックして特定のボックスを反転すると、バックエンド PHP に ajax リクエストを送信します。その後、バックエンドの PHP が通過し、確率アルゴリズムにより当選結果が通知され、同時に未当選の賞品情報が JSON データ形式でフロントエンド ページに送信されます。
まず確率計算関数を見てみましょう
function get_rand($proArr) { $result = ''; //概率数组的总概率精度 $proSum = array_sum($proArr); //概率数组循环 foreach ($proArr as $key => $proCur) { $randNum = mt_rand(1, $proSum); if ($randNum <= $proCur) { $result = $key; break; } else { $proSum -= $proCur; } } unset ($proArr); return $result; }
上記のコードは、配列が 1,1000 から始まる、array(100,200,300,400) であると仮定します。この確率範囲を調べて、最初の数値がその出現確率範囲内にあるかどうかを調べます。そうでない場合は、k の値からその数値の確率空間を減算します。つまり、100 が減算されます。 2 番目の数値は 1,900 の範囲内でフィルターされます。このようにして、最後まで要件を満たす数が必ず存在します。それは、箱の中の何かに触れるようなものです。最初のものがそこになく、2 つ目も存在せず、3 つ目も存在しない場合は、最後のものが存在するはずです。このアルゴリズムはシンプルで非常に効率的です。重要なのは、このアルゴリズムが以前のプロジェクト、特に大量のデータを含むプロジェクトに適用されているということです。
次に、PHP を通じて賞を設定します。
は、この宝くじのすべての賞品情報を記録する 2 次元配列です。ここで、id は当選レベルを表し、prise は賞金を表し、v は当選確率を表します。 v は整数である必要があることに注意してください。対応する賞の v を 0 に設定できます。これは、賞を獲得する確率が 0 であることを意味します。配列 (基数) 内の v の合計は大きくなります。正確な確率を反映することができます。この例では、v の合計が 100 であるため、タブレットの当選確率は 1% になります。v の合計が 10,000 の場合、当選確率は 1 万分の 1 です。
フロントエンドページがリクエストされるたびに、PHP は特典設定配列をループし、確率計算関数 get_rand を通じて抽選された特典 ID を取得します。当選賞品を配列 $res['yes'] に保存し、残りの非当選情報を $res['no'] に保存し、最後に json 数値データをフロントエンド ページに出力します。