これを行うPHPの方法は次のとおりです
あなたの配列は次のようになると想像しています...
$banners = array(
array (
'name' => 'banner1',
'views' => 20
),
array (
'name' => 'banner2',
'views' => 10
),
array (
'name' => 'banner3',
'views' => 5
)
);
この関数は基本的にバナーをループし、バナーのビュー数に関係なく、その配列インデックスの多くの項目が配列に追加されます。次に、ランダムなものが選択されます。ビュー数が多いアイテムほど、選択される可能性が高くなります。
function getWeightedRandom( $array ) {
$universe_array = array();
foreach ( $array as $k => $b ) {
$universe += $b['views'];
$universe_array = array_pad( $universe_array, $universe, $k );
}
$rand = mt_rand( 0, count( $universe_array ) -1 );
return $array[ $universe_array[ $rand ] ];
}
$r = getWeightedRandom($banners);
print_r($r);
シンプルな mysql オプションは次のとおりです。
select * from banners order by rand() * views desc limit 1
より多くのビューを持つバナーは、上位の結果になる可能性が高くなります