Partage
  • Partager sur Facebook
  • Partager sur Twitter

aide algorithme Répartition par deux clés

Je deviens fou

Sujet résolu
    9 décembre 2018 à 17:11:45

    Messieurs, Dames, bonjour

    Après plusieurs jours à me rendre quasi malade si cette question (et même plusieurs semaines à penser avoir résolu le problème et puis ben non), je me tourne vers vous en espérant que quelqu'un aura la possibilité de m'aider

    Le problème de base est simple : je dois répartir une valeur entre plusieurs joueurs en fonction de deux critères

    exemple : je dois répartir 200 pièces en fonction des deux colonnes ci dessous.

    Ce qui me pose problème c'est qu'à l'instant du calcul, je n'ai pas encore accès à toutes les valeurs individuelles (l'algo se positionne dans une boucle qui liste les joueurs donc par exemple au moment où je vérifie johnny, je n'ai pas les résultats de tous les autres).

    Les seules données auxquelles j'ai accès à tout instant : le total à répartir, la somme de la colonne jets et la somme de la colonne puissance (en %) et le total de joueurs. Je peux également obtenir les mêmes totaux en excluant par exemple Florent qui est à 0% de puissance.

    j'obtiens bien évidemment les valeurs individuelles de chaque joueur chaque fois que le moment pour l'algo de leur donner leur part du butin.

    Je comprends que ce n'est pas optimal mais c'est une contrainte que je ne peux pas changer donc la solution n'est pas là (si il y'en a une).

    Je réalise ce script en php si cela peut vous aider

      Jets puissance/100
    johnny 10 10
    eddy 20 10
    jacques 17 10
    michel 20 80
    claude 20 100
    florent 15 0
      102 210

    selon cet exemple et l'idée que j'ai en tête je désire que Florent ait 0 pièces, que claude ait sensiblement plus de pièces que johnny, que eddy ait également sensiblement plus que johnny et michel moins que claude mais dans une moindre proportion.

    j'étais parti sur l'idée suivante :

    trésor * (jets/totalJets) * puissance/100


    Ce qui me donne effectivement un résultat individuel intéressant mais dont la somme par définition ne vaut pas la valeur du trésor (200)

    j'ai donc eu l'idée d'essayer de calculer le manquant (ou reste) total avant la répartition mais je ne tombe pas sur le bon résultat quoi que je fasse (des variations sur le thème :

    reste = trésor - (trésor * 210/600)

    avec 210 somme des puissance et 500 : total des joueurs * 100

    Mon algo fonctionnait plus ou moins correctement mais j'ai du introduire la possibilité pour la puissance (ou les jets) d'être faible voir = 0 et ça a tout déréglé

    Je vous remercie d'avance pour l'aide que vous pourrez m'apporter, ce problème me bloque depuis un temps incalculable 

    bon dimanche 

    • Partager sur Facebook
    • Partager sur Twitter
      9 décembre 2018 à 18:38:09

      Bonjour Elazard,

      Un tableau comme ça peut-être :

        Jets Puissances (%) Totaux Points   Trésor
      John 10 10 100 5   200
      Eddy 20 10 200 10    
      Jacques 17 10 170 8    
      Michel 20 80 1600 79    
      Claude 20 100 2000 98    
      Florent 15 0 0 0    
        102 210 4070 200    

      J'ai ajouté un calcul intermédiaire, totaux = jets * puissances.

      Puis ensuite un simple calcul, points = ARRONDI( trésor * totaux / somme(totaux) ).

      Pour télécharger le fichier excel.

      Si tu souhaites améliorer la répartition, il faudrait a priori calculer une gaussienne et modifier les totaux.

      -
      Edité par yarflam 9 décembre 2018 à 18:49:39

      • Partager sur Facebook
      • Partager sur Twitter
        9 décembre 2018 à 18:52:41

        Bonjour Yarflam,

        Merci pour ta réponse ! C'est une piste intéressante, il faut que je regarde si il y'a moyen que j'obtienne le valeur de la somme de la colonne intermédiaire en début de calcul. Je ne suis pas sur que ce sera possible. A moins qu'il existe une relation mathématique entre le total de la colonne intermédiaire et les deux totaux des colonnes de clé de répartition? je pense que non à vue de nez mais sait-on jamais 

        En tout cas merci de m'avoir donné une nouvelle piste.

        Edit : je devrais pouvoir via une requête imbriquée avant le reste du calcul merci ! 

        Edit 2 : je confirme, ça fonctionne nickel, un giga mega grand merci! et une super fin ( :() de dimanche

        -
        Edité par elazard 9 décembre 2018 à 20:08:47

        • Partager sur Facebook
        • Partager sur Twitter

        aide algorithme Répartition par deux clés

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown