Tirage au sort pondéré

Résolu/Fermé
Naflin Messages postés 79 Date d'inscription lundi 21 juillet 2008 Statut Membre Dernière intervention 13 juin 2023 - 9 avril 2015 à 16:30
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 - 9 avril 2015 à 18:12
Bonjour les humains !

Je voudrais créer un système qui tire au sort un joueur dans une liste, mais en pondérant par rapport à l'inverse du nombre de match déjà joués.
Autrement dit : ça tire au sort un nom de joueur, sachant que moins un joueur a déjà livré de parties, plus il a de chance d'être sélectionné.

Le système que j'ai bidouillé arrive à me mettre un à coté du nom du joueur tiré au sort de cette manière.

Mais je rencontre un problème sur la dernière étape : quand la feuille est sensée aller chercher le nom du joueur qui a été tiré au sort, et me le donne
J'ai ajouté une formule =RECHERCHE(1;E:E;A:A)
C'est sensé chercher dans la colonne E, là où il y a un 1, et me donner le nom du joueur tiré au sort... (qui est dans la colonne A)
Mais au lieu de ça, cette formule me sort le nom du dernier de la liste.
Pourquoi ? Où ai-je fait une erreur ?

Si ça peut être utile, voilà le processus qui fait le tirage au sort :

J'ai créé un tableau, avec une colonne où il y a le nom de tous les joueurs. (Colonne A)
Puis une autre colonne avec le nombre de matchs qu'ils ont livrés. (colonne B)
Une autre colonne avec la formule =MAX(B:B)-B1 (sur la première ligne, le tout est étiré vers le bas). J'obtiens donc une valeur qui décroit quand augmente le nombre de matchs livrés. (colonne C)
J'ai fait une autre colonne où il y a le cumul des valeurs dans la colonne C.
(on prend la valeur de la ligne au dessus, à laquelle on ajoute la valeur de cette ligne à la colonne C) (colonne D)

J'ai ensuite mit une cellule avec la fonction =ALEA.ENTRE.BORNES(1;D78)
qui tire au sort un nombre comprit entre 1 et la valeur à la fin de la colonne D. (c'est la cellule F1)

Et enfin j'ai ajouté une autre colonne (E), avec la fonction =SI(F$1<=D2;SI(F$1>D1;1;0);0)

J'aboutis enfin à un système qui m'affiche un 1 dans la colonne qui est tirée au sort.

Merci de votre aide !

2 réponses

Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 418
9 avril 2015 à 17:35
Bonjour
essayez avec:
=INDEX(A:A;EQUIV(1;E:E;0))
crdlmnt
1
Naflin Messages postés 79 Date d'inscription lundi 21 juillet 2008 Statut Membre Dernière intervention 13 juin 2023 9
9 avril 2015 à 18:04
Merci beaucoup.
Quelle est la différence entre la fonction INDEX et la fonction RECHERCHE ?
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 418
9 avril 2015 à 18:12
La fonction recherche nécessite que le champ de recherche soit classé par ordre croissant.

C'est la même chose avec EQUIV qui cherche le N° de ligne du champ, mais cet inconvénient est contourné par le code final;0) qui peut être aussi ;FAUX)

On a le même cas de figure avec RECHERCHEV ou RECHERCHE, avec ou sans l code final mais avec ce code, la recherche se fait dans la 1° colonne du champ.

Par ailleurs, INDEX permet de renvoyer une valeur dans un tableau en rajoutant le N° de colonne:

=INDEX(plage; N° de ligne;N° de colonne)

crdlmnt
0
ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 2 428
9 avril 2015 à 17:44
Bonjour

Je ne sais pas si j'ai tout compris
https://www.cjoint.com/?3Djr4Rp6Eq5

Cdlmnt
0