Oui, j'ai bien compris.
Sauf que le tirage au sort est par définition du hasard.
Là, tu augmentes la probabilité de gagner en fonction d'un classement (ton système de points). Par conséquent ce n'est pas un tirage au sort.
Lors d'un tirage au sort, on prend théoriquement les participations en compte. Si le membre à participé plusieurs fois, il a, mathématiquement, plus de chance d'être tiré au sort.
Mais a priori, dans ton tirage au sort c'est sur une base de données en fonction d'un nombre de points et non d'un nombre de participation, c'est bien ça?
La seule solution que je vois là comme ça :
PHP:
<?php
// La liste des utilisateurs
$users = array(
array('nom' => 'Jean', 'points' => 5),
array('nom' => 'Pierre', 'points' => 10),
array('nom' => 'Marc', 'points' => 20),
array('nom' => 'Paul', 'points' => 5),
array('nom' => 'Romain', 'points' => 10),
array('nom' => 'Arnaud', 'points' => 20),
array('nom' => 'Thomas', 'points' => 40),
);
$listMembers = array();
foreach($users as $u){
// On multiplie les chances d'apparaitre dans le tableau en fonction des points
switch($u['points']){
case 5:
$multiplier = 1;
break;
case 10:
$multiplier = 2;
break;
case 20:
$multiplier = 3;
break;
case 30:
$multiplier = 4;
break;
case 40:
$multiplier = 5;
break;
}
for($i=0; $i < $multiplier; $i++){
$listMembers[] = $u['nom'];
}
}
// si on veut melanger le tableau, il faut décommenter la ligne ci-dessous
//shuffle($listMembers);
print '<pre>';
print_r($listMembers);
print '</pre>';
// selectionne une valeur au hasard dans le tableau
$gagnant = array_rand($listMembers);
echo '<p>Le membre gagnant est <b>'.$listMembers[$gagnant].'</b></p>';
En gros ça va créer un tableau contenant tout les membres que tu veux tirer au sort.
Un membre ayant plus de points apparaitra plusieurs fois (c'est le switch), augmentant ainsi ces chances de gagner.
A adapter en fonction de ton code.. Mais comme dit, c'est pas vraiment un tirage au sort