Algorithme pour pourcentage et priorité

Résolu
Hypolythe -  
 Hypolythe -
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

  1. SamFish Messages postés 24 Statut Membre 8
     
    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
  2. Hypolythe
     
    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
  3. KX Messages postés 19031 Statut Modérateur 3 020
     
    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
  4. Hypolythe
     
    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