Algorithme pour pourcentage et priorité

Résolu/Fermé
Hypolythe - Modifié par Hypolythe le 5/12/2012 à 18:47
 Hypolythe - 5 déc. 2012 à 19:17
Bonjour, bonsoir,

Je cherche à mettre en place l'algorithme suivant :

J'ai un nombre indéfini d'éléments.
Chaque élément possède une priorité (par exemple de 1 à 3)
je dois être capable en fonction du nombre d'éléments et de leur priorité de sortir un pourcentage.
Par exemple, j'ai 4 éléments :
un élément en priorité 1 (priorité élevée)
un élément en priorité 1 (priorité élevée)
un élément en priorité 2 (priorité moyenne)
un élément en priorité 3 (priorité basse)

J'aimerai convertir ça en pourcentage pour chaque élément (quelque chose comme 35% / 35% / 20% / 10%).

Auriez-vous une idée d'algorithme pour mettre en place ce calcul ?

Merci par avance pour votre aide !

4 réponses

SamFish Messages postés 21 Date d'inscription mardi 4 décembre 2012 Statut Membre Dernière intervention 14 décembre 2012 8
5 déc. 2012 à 18:54
Le pourcentage représentera quoi ?

Un indice qui servira à prioriser quel élément doit être traité en premier ?
Un pourcentage indiquant le nombre d'éléments par priorité par rapport au nombre total d'éléments ?
0
Bonjour SamFish, merci de répondre.

Le pourcentage me servira à établir une chance d'affichage de cet élément.
En reprenant l'exemple précédent, le 1er et le 2ème élément auraient (à peu près) 35% de chances chacun d'être affichés.

En fait je m'en sers pour choisir un élément aléatoirement parmi la liste (en fonction du nombre d'éléments dans la liste et de leur priorité à chacun).

J'espère être clair, n'hésite pas dans le cas contraire.
0
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
5 déc. 2012 à 19:12
Je ne vois pas le problème...

Il suffit d'étalonner chaque niveau de priorité avec le pourcentage que tu souhaites, puis reprendre ces valeurs pour les autre cas !

Par exemple :
Niveau 1, pourcentage=35
Niveau 2, pourcentage=20
Niveau 1, pourcentage=10

Ce qui donne sur l'étalon :
Élément priorité 1 : 35/(35+35+20+10)=35%
Élément priorité 1 : 35/(35+35+20+10)=35%
Élément priorité 2 : 20/(35+35+20+10)=20%
Élément priorité 3 : 10/(35+35+20+10)=10%

Et sur un autre exemple :
Élément priorité 1 : 35/(35+20+20+10)=41.2%
Élément priorité 2 : 20/(35+20+20+10)=23.5%
Élément priorité 2 : 20/(35+20+20+10)=23.5%
Élément priorité 3 : 10/(35+20+20+10)=11.8%
0
Hello !

Ce n'est pas tout à fait ça que je cherche.
En revanche, je pense avoir trouvé la solution à force de retourner le truc.

Il faut que je réfléchisse en tableau :

[element1, element2, element3]

Si mon element1 a une priorité de 3, je le duplique 2 fois pour qu'il ait plus de chances de sortir :

[element1, element1, element1, ...]

Ensuite je fais un nombre aléatoire entre 0 et la longueur de mon tableau, et voilà. La priorité est respectée.

Merci pour votre aide KX et SamFish.
Bonne soirée.
0