OVH Cloud OVH Cloud

Tirage au sort pour tounois

2 réponses
Avatar
Gilles Wiliquet
Bonjour,

Je travaille actuellement sur le site d'un tournois de jeu en réseau.
Une fois les équipe inscrites, je voudrais que sur demande de
l'administrateur, les équipes soit réparties dans différentes poules.
Chaque équipe est inscrite dans une table "csonline_teams" et possède une
colonne "pouleid".
Il faudrait donc créer un script qui exécute cette requete : "UPDATE
csonline_teams SET pouleid = $random WHERE team = $team".

Mon problème :
1) Je ne connais pas de fonction qui puisse me donner un nombre de 1 à xx
aléatoirement.
2) Je ne sais pas quoi utiliser pour effectuer la requête UNE fois pour
CHAQUE équipe.
3) Il ne faut pas que les poules soit disproportionnées.

Merci d'avance pour votre aide.

2 réponses

Avatar
Guillaume Bouchard
1) Je ne connais pas de fonction qui puisse me donner un nombre de 1 à xx
aléatoirement.


Random ?

2) Je ne sais pas quoi utiliser pour effectuer la requête UNE fois pour
CHAQUE équipe.


Tu change $team ?

3) Il ne faut pas que les poules soit disproportionnées.


En puissance de chaque equipe ? ou une poule avec 2 equipe et une avec 15 ?

Ce que je peux te proposer, tu recuperes les id de toutes les team dans
un tableau que tu melanges via shuffle()

Ensuite, il te suffit de faire une petite boucle.

-----------------------------------------
<?php

# Array contenant les id de poule.
$team = array(
'team1',
'team2',
'team3',
'team4',
'team5',
'team6',
'team7',
'team8',
'team9',
'team10',
'team11',
'team12',
'team13',
'team14',
'team15',
'team16',
'team17',
'team18',
);

# nombre de poules voulue.
$nb_poule = 4;

# shuffle du tableau
srand ((float)microtime()*1000000);
shuffle($team);

# init des vars.
$poule = array();
$a = 0;

for($i = 0;$i < count($team) ;$i++)
{
$poule[$a][] = $team[$i];

$a++;

# Quand on a remplit chaques poules, on revient a la poule numero 1.
if($a == $nb_poule)
{
$a = 0;
}

}
print_r($poule);
?>
------------------------------------------------

--
Guillaume.

Avatar
Hugues Peeters
Ce que je peux te proposer, tu recuperes les id de toutes les team dans
un tableau que tu melanges via shuffle()


Attention, pas de fonction shuffle() dans les versions précédant PHP
4.2.2. De plus, l'algorithme utilisé dans cette fonction tend à plus
favoriser certaines permutations que d'autres. Cette fonction a été
réécrite depuis PHP 4.3.

Si tu n'as pas encore installé PHP 4.3, voici une fonction proposée par
David Sklar et Adam Trachtenberg (PHP Cookbook - O'Reilly) qui fera
l'affaire.

pc_array_shuffle($array) {

$i = count($array);

while (--$i) {

$j = mt_rand(0, $i);

if ($i != $j) {

$tmp = $array[$j];
$array[$j] = $array[$i];
$array[$i] = $tmp;
}
}

return $array;
}

Cordialement,

Hugues Peeters
---

http://www.claroline.net