ホームページ >バックエンド開発 >PHPチュートリアル >PHP宝くじ、ランダム広告アルゴリズム

PHP宝くじ、ランダム広告アルゴリズム

WBOY
WBOYオリジナル
2016-06-23 13:48:19839ブラウズ

まずバックエンド 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 を通じて賞を設定します。


rrree

は、この宝くじのすべての賞品情報を記録する 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 数値データをフロントエンド ページに出力します。


れー

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。