Voici une manière de php pour le faire
J'imagine votre tableau ressemblera à quelque chose comme ça ...
$banners = array(
array (
'name' => 'banner1',
'views' => 20
),
array (
'name' => 'banner2',
'views' => 10
),
array (
'name' => 'banner3',
'views' => 5
)
);
Cette fonction boucles essentiellement à travers les bannières et cependant beaucoup vues une bannière a , que de nombreux éléments de son index de tableau sont ajoutés à un tableau. Puis un aléatoire est choisi. Les articles avec plus de vues ont une meilleure chance d'être choisis.
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);
Une option simple MySQL est:
select * from banners order by rand() * views desc limit 1
bannières avec plus de vues auront une plus grande chance d'être le meilleur résultat
-1, cette requête SQL renvoie toujours la bannière avec le plus vues. –
En fait, il ne va pas. – Galen
Vous avez raison désolé, a changé mon vote. –