広告のリストがあります。ローテーション(パーセンテージを表す)と表示された回数に基づいてローテーションしたいと思います。広告はいくつあってもかまいませんが、それらは多次元配列内にリストされています。各行は1つの広告です。表示されるたびに、表示される値は+1増加します。
$aAd[] = array('viewed' => 2003, 'rotation' => 70); // 70%
$aAd[] = array('viewed' => 122, 'rotation' => 30); // 30%
ローテーションと表示回数に基づいて、次に表示する広告を選択する方法を模索しています。誰かがこれを行うための公式を手伝うことができますか?
アルゴリズムは、表示する次のアルゴリズムを選択する必要があります。アルゴリズムは、表示された回数と表示されるパーセンテージ(回転)に基づいて選択する必要があります。現在、広告の順序は特定の順序ではありません。ローテーションは、クライアントが広告を表示したい希望のパーセンテージを表します。この例では、ローテーションが70/30に等しい限り、広告が2回続けて選択されても問題ありません。広告はいくつあってもかまいませんし、異なるローテーションを割り当てることもできます。
この関数を使用できます:
function getNextAdIndex($aAd) {
$scores = array_map(function ($ad) { return $ad["viewed"] / $ad["rotation"]; }, $aAd);
return array_search(min($scores), $scores);
}
それは、$aAd
(回転パーセンテージに基づいて)理想的に持つべきものと比較してビューが最も少ないインデックスを返します。
$aAd[] = array('viewed' => 0, 'rotation' => 70); // 70%
$aAd[] = array('viewed' => 0, 'rotation' => 30); // 30%
// Provide the next 100 views:
for ($i = 0; $i < 100; $i++) {
$j = getNextAdIndex($aAd);
echo "showing add $j\n"; // Do whatever is needed to "display" an ad here
$aAd[$j]["viewed"]++; // Increase its number of views
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加