Tirage au sort avec poids

cs_Pekka Messages postés 12 Date d'inscription lundi 13 mai 2002 Statut Membre Dernière intervention 30 octobre 2009 - 26 oct. 2009 à 11:17
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 - 30 oct. 2009 à 19:02
salut à tous,

Je voudrais tirer au sort une personne mais ces personnes ont plus ou moins de chance :

$tab[1] = 10;
$tab[2] = 100;
$tab[3] = 1000;
$tab[4] = 900;


ce qui veut dire en français , que le joueur 1 a 10 chance de gagner, les joueur 2 a 100 chances, ...

Je ne sais pas comment avantage le joueur 3 dans le tirage.

Merci de votre aide.
A voir également:

7 réponses

Arto_8000 Messages postés 1044 Date d'inscription lundi 7 mars 2005 Statut Membre Dernière intervention 13 juillet 2010 7
27 oct. 2009 à 03:22
La façon la plus simple d'aborder le problème serait d'avoir un algorithme dans ce genre :

<?php
$total = 0;
for ($i=0;$i<count($tab); $i++)
    $total += $tab[$i];

$rdNumber = rand() * $total;
$seek = 0;
$resultat = 0;
for ($i=0; $i<count($tab); $i++) {
    if ($rdNumber <= $seek+$tab[$i]) {
        $resultat = $i;
        break;
    }
    $seek += $tab[$i];
}

echo 'Le résultat gagnant est le ' . $resultat;
?>


En gros ce que l'algorithme fait c'est d'additionner toutes les chances et après on prend le nombre aléatoire qui nous mène vers notre chiffre.

Dans ton cas la sommes est 2010. Si le nombre aléatoire est entre 0 et 10, c'est le 1 qui gagne, entre 10 et 110 c'est le 2 qui gagne, entre 110 et 1110, c'est le 3 qui gagne, etc.
1
Rejoignez-nous