vendredi 9 mai 2014

Weapons Comparator 4000, il est sorti !



C'est historique ! La première version de mon comparateur d'arme est sortit ! C'est du C++ en console, ça pèse pas lourd, donc allez y ! La notice est dans le ReadMe (mais en anglais, évidemment !).

Bon allez, je vais quand même vous expliquer la méthode utilisé. Ce programme est en fait basé sur une formule de propabilité que j'ai vu en première, en fait ça sert bien à quelquechose les cours ;p

Tout d'abord, la base. Il existe ce que l'on appelle une expérience aléatoire : par exemple, lancer un dé à 6 faces et équilibré (c'est important !). Cette expérience à donc 6 issues : 1 ; 2 ; 3 ; 4 ; 5 ; 6. Comme ce dé est équilibré, chaque issue a une probabilité de 1/6 d'être réalisé, c'est à dire une chance sur six. Vous me suivez ? Bien !
xi représente les issues, p les probabilités.

Venant en maintenant à la formule de l’espérance : si on lance beaucoup de fois le dé, on peut prévoir théoriquement l'issue (c.a.d. la face) qui ressortira le plus souvent.
La formule de l'espérance se présente sous cette forme : Σ pi xi... Quézako ? On peut traduire cette formule par "somme des pi*xi". Donc dans le cas du dé, on fait : 1*(1/6) + 2*(1/6) + 3*(1/6) + 4*(1/6) + 5*(1/6) + 6*(1/6). Faites donc ce calcul avec votre calculatrice ou votre tête, et vous trouvez... 3,5, qu'on peut arrondir à 4 ou à 3 (l'exemple n'est pas très bien choisi car toutes les issues ont la même probabilité...). Ainsi, il ressortira le plus souvent un 4 ou un 3 (normalement il faudrait arrondir à 4, m'enfin là c'est de la proba, donc...).

Maintenant que vous avez compris la formule, attaquons nous maintenant aux lancés de dés dans les roguelikes. Le plus souvent, une arme fait des dégâts aléatoirement, elle sont représentées sous la forme suivante : aDb+c (généralement). a représente le nombre de dé à lancer, b le nombre de face des dés, et c les dégâts supplémentaires (c'est facultatif).

Si on met en place la formule de l'espérance sur ces lancés (on présume que b=6, donc que les dés ont 6 faces), on a :
a * ( 1*(1/b) + 2*(1/b) + 3*(1/b) + 4*(1/b) + 5*(1/b) + 6*(1/b) ) + c    qu'on peut simplifier par :
a * (1/b) * (1+2+3+4+5+6) + c    qu'on peut simplifier par :
a * (1/b) * (b*(b+1)/2) + c    qu'on peut simplifier par :
(a/b) * (b*(b+1)/2) + c    qu'on peut simplifier par :
a * (b+1)/2 + c

Et voilà ! Notre nouvelle formule toute belle toute propre !
Comme vous pouvez le voir, on applique d'abord la formule de l'espérance sur un dé, on multiplie le résultat par le nombre total de dé, puis finalement on ajoute les dégâts facultatif.

J'espère avoir été assez clair dans mon petit cours improvisé, si vous avez des questions, n'hésitez pas ! ++

https://drive.google.com/file/d/0B1tHlf-v8X-CenJHeVZpeklvTEk/edit?usp=sharing

Le code source : https://gist.github.com/ZeBlobNH/582af54edba5f30f11c4

Aucun commentaire:

Publier un commentaire