Tableur calculateur de drop - Modèle mathématique April 25, 2018 Ce document a pour but d’expliquer les modèles mathématiques qui ont été utilisés pour concevoir mon calculateur de drop (tableur excel). J’espère que malgré le fait que ce soit assez technique, il reste compréhensible pour les personnes intéressées :-) Deux versions du tableur existe: l’une pour la version 2 de dofus (max. 8 lignes de drop), et l’autre pour la version 1.29 (jusqu’à 16 lignes de drop si l’on pose 8 coffres). Paramètres d’un combat Soit un combat de N persos/coffres (il y a aura donc N lignes de drop à la fin du combat, avec N pouvant aller de 1 à 16) contre M monstres (M = 1, 2, · · · , 8) sur lesquels on peut dropper la ressource voulue avec un taux de base P (en %). Un bonus total de drop B en % (challenge, étoile, idole) est appliqué. De plus, nous appelons ppi la prospection du perso/coffre i (avec i = 1, · · · , N ). Dans un premier temps, calculons le taux de drop du perso/coffre i (i = 1, · · · , N ) sur UN SEUL mob (bridé à 1 = 100%): P ppi B Pi = P (i drop une ressource sur un mob) = × × 1+ 100 100 100 Cette formule est connue et a été validée par ankama dans un dofus time sur le drop. Pour la suite, nous devons considérer 2 cas... 1 CAS 1: Si le drop est limité à une ressource max par mob... Cette catégorie concerne les ressources rares (vulbis, gelano,...) pour lesquelles chaque mob peut "fournir" au maximum une 1x la ressource. Par exemple, à l’issue d’un combat de 8 persos contre 2 gelées fraises, on peut drop jusqu’à 2 gelanos mais pas plus ! Par contre, dans un combat de 8 persos contre 2 bouftous, on peut obtenir jusqu’à 16 laines de bouftous (2 par persos). 1 1.1 Taux de drop du groupe sur un mob Nous allons tout d’abord chercher à déterminer la loi de probabilité correspondante au drop de tout le groupe (donc des N persos/coffres) contre UN mob. Le groupe pourra dropper la ressource du mob ou non. L’évenement "pas de drop" aura lieu si aucun des persos ne drop sur le mob: P (pas de drop) = P ((1 ne drop pas) ET (2 ne drop pas) ET ... ET (N ne drop pas)) = P (1 ne drop pas) × · · · × P (N ne drop pas) On peut passer de la première à la seconde ligne car les évenements "i ne drop pas" (avec i = 1, · · · , N ) sont indépendants (en effet, le "non drop" d’un perso ne dépend pas du "non drop" d’un autre). Or P (i ne drop pas) = 1 − Pi (avec Pi connu car calculé précédemment). De plus: P (drop) = 1 − P (pas de drop). Donc, en mettant tout ensembles: P (drop) = 1 − (1 − P1 ) × · · · × (1 − PN ) 1.2 Si M mobs dans le combat... Le drop du groupe de N persos/coffres sur UN mob correspond en réalité à une épreuve de Bernouilli (voir sur wikipédia) dont le paramètre p est calculé dans la section précédente par p = P (drop). Dans cette épreuve le succès = le groupe drop (le mob "perd" sa ressource) et l’échec = le groupe ne drop pas. Si maintenant on considère qu’il y a M mobs pendant le combat, c’est comme si le groupe "passait" M fois l’épreuve de Bernouilli de paramètre p ⇒ le nombre de drop (= nombre de "Succès") pour ce combat de M mobs se modélise par une loi de probabilité binomiale de paramètres (M, p) ! La loi de probabilité pour la variable aléatoire du nombre de drop X est donnée par: M P(X = k) = pk (1 − p)M −k k Il est plus intéressant de connaître la probabilité d’obtenir AU MOINS k drops (par exemple: la probabilité d’obtenir AU MOINS 2 gelanos (k = 2 dans la formule ci-dessous) sur un combat de 6 gelées fraises (M = 6)). Cela se calcule de la manière suivante: P(X ≥ k) = 1 − k X i=1 2 P(X = i) 1.3 Si C combats de M mobs... Si l’on veut connaitre la loi de probabilité du nombre de drops obtenus au cours de C combats de M mobs 1 , il faut simplement considérer C × M épreuves de Bernouilli à la suite ⇒ le nombre de drop (= nombre de "Succès") pour ces C combats de M mobs se modélise par une loi de probabilité binomiale de paramètres (M × C, p) (avec toujours le même p qu’avant)! La loi de probabilité pour la variable aléatoire du nombre de drop X est donnée par: M ×C k P(X = k) = p (1 − p)(M ×C)−k k Il est plus intéressant de connaître la probabilité d’obtenir AU MOINS k drops (par exemple: la probabilité d’obtenir AU MOINS 5 gelanos (k = 5 dans la formule cidessous) sur 10 combats (C = 10) de 4 gelées fraises (M = 4)). Cela se calcule de la manière suivante: P(X ≥ k) = 1 − k X P(X = i) i=1 1.4 Nombre moyen de drops sur C combats de M mobs... Il suffit de calculer l’espérence mathématique de la loi binomiale de paramètres (M × C, p) ⇒ M × C × p. 2 CAS 2: Pas de limite de ressources à drop par mob Ici, le nombre de ressources à drop n’est plus limité à 1 par mob ⇒ dans un combat de 8 persos contre 2 bouftous, on peut obtenir jusqu’à 16 laines de bouftous (2 par persos). Les raisonnement pour obtenir les lois de probabilité seront fort différent du cas 1 ! 2.1 Taux de drop d’un perso face à M mobs Soit le combat des N persos/coffres contre les M mobs. Définissons les variables aléatoires suivantes: Xi = Nombre de ressource drop par le perso i à la fin du combat Ainsi, 1 Il n’est pas forcément réaliste de considérer qu’il y aura à chaque fois le même nombre de mob par combat. Toutefois, si on considère qu’on fait que les combats avec AU MOINS M mobs et que l’on en fait C (par exemple on décide de faire 100 combats contre au moins 3 gelées fraises), on est sur qu’on aura AU MOINS la probabilité calculée de drop. 3 P(Xi = k) = Probabilité pour i de dropper k ressources = Proba((i drop sur k mob)ET(i ne drop pas sur les M-k autres mobs)) × (le nombre de façons possibles de prendres k mobs sur un ensembles de M mobs) En termes mathémathiques cela se formule de la manière suivante: k M −k M P(Xi = k) = Pi (1 − Pi ) k Nous connaissons donc pour le moment la loi de probabilité correspondante au nombre de ressources drop sur le combat pour chacun des persos. C’est une première étape ! Il reste à déterminer la loi de probabilité des ressources drops sur le combat mais pour l’ensemble du groupe. 2.2 Taux de drop du groupe face à M mobs Dans la section précédente, la variable aléatoire Xi a été définie comme le nombre de ressources droppées par le perso i à la fin du combat. Considérons à présent la somme de ces variables aléatoires: X1 + X2 + · · · + XN = YN . Cette nouvelle variable, appelée YN nous intéresse puisqu’elle représente la somme des drops de chacun des personnages et donc le nombre de ressource drop par l’ensemble du groupe ! Tout l’enjeu de cette section sera donc de déterminer la loi de probabilité associée à YN . L’idée sera de construire cette loi par itération. Considérons la variable Y2 = X1 + X2 , elle correspond au nombre de ressources droppées par les persos 1 et 2. On a: P(Y2 = k) = P((X1 = 0) ∩ (X2 = k)) + P((X1 = 1) ∩ (X2 = k − 1)) +P((X1 = 3) ∩ (X2 = k − 3)) + · · · + P((X1 = k) ∩ (X2 = 0)) ⇔ P(Y2 = k) = k X P(X1 = i) × P(X2 = k − i) i=0 De la même manière, on peut trouver la loi de probabilité de Y3 = X1 +X2 +X3 = Y2 +X3 : P(Y3 = k) = k X P(Y2 = i) × P(X3 = k − i) i=0 4 En généralisant: j = 1 → P(Yj = k) = P(X1 = k) j = 2, · · · , N → P(Yj = k) = k X P(Yj−1 = i) × P(Xj = k − i)) i=0 Et donc, P(YN = k) = k X P(YN −1 = i) × P(XN = k − i)) i=0 Et voilà, nous avons notre loi de probabilité ! :-) Le nombre moyen de ressources droppées sur un combat se calcule par l’espérance de la loi: Nombre moyen de ressources drop/combat = NX ×M i × P(YN = i) i=1 2.3 Si C combats de M mobs... J’ai fait le choix de ne pas calculer la loi de probabilité précise sur C combats parce que pour les ressources dont le drop n’est pas limité à un par mob je trouvais pas qu’il y avait beaucoup d’intérêt (beaucoup moins que pour les ressources rares type vulbis ou gelano). C’est aussi une question de temps, ça complexifie pas mal pour pas grand chose et j’avais envie de cloturer mon tableur :-) Pour ce qui est du nombre moyen de drop sur ces C combats, il est donné par le nombre moyen de drop par combat multiplié par C. Si toutefois on veut modéliser une loi de probabilité complète,on peut le faire en définissant les variables aléatoires Ri (i = 1, · · · , C) qui représentent le nombre de ressources droppées au i-ème combat et qui suivent la même loi de probabilité que YN (on a d’ailleurs P R1 = YN ). De là, on définit les variables aléatoires Zi = ik=1 Rk le nombre de ressources droppées sur les i premiers combats. La variable d’interêt dont nous voulons la loi de probabilité sera alors ZC ! Nous pouvons construire cette loi par itération de la même manière que précédemment: j = 1 → P(Zj = k) = P(R1 = k) j = 2, · · · , C → P(Zj = k) = k X i=0 Et donc, 5 P(Zj−1 = i) × P(Rj = k − i)) P(ZC = k) = k X P(ZC−1 = i) × P(RC = k − i)) i=0 Notons que le nombre de ressources droppées en C combats peut vite devenir très conséquente et par conséquent le nombre de valeurs pour laquelle il faille calculer la loi de probabilité! Par exemple, un groupe de 8 persos et 8 coffres affrontant 8 mobs sur lesquels la ressource se drop pendant 100 combats => jusqu’à 16x8x100 = 12800 ressources droppées. 6