13-02-2008, 05:09 PM
Toute fonction uniformément croissante de 0 à 1 pourra convenir.
Pour plus de facilité, tu peux commencer par normaliser les deux valeurs à combattre, en faisant u1 = L1/(L1+L2) et idem pour le niveau adverse.
Ensuite soit tu gardes ça directement comme probabilité de réussite:
S lvl 20 et CS lvl 10 donne 20/30 = 0.6
S lvl 40 et CS lvl 40 donne 40/80 = 0.5
S lvl 10 et CS lvl 40 donne 10/50 = 0.2
soit tu utilise une forme qui amène plus vite aux extrêmes si tu veux différencier plus vite les niveaux.
Défaut : une différence de 3 lvl ne vaut plus rien pour de haut lvl et devient énorme pour des petits. Si tu veux que la hiérarchie persiste, il faut changer d'approche. Dans ce cas,il faut travailler directement sur la différence de niveaux comme proposé par arsenine.
0.5*(1+arctan(diff)) peut donner de bon résultats, sans utiliser de if. Pour une différence de 0 tu as 0.5, et ça tend vers 1 à l'infini positif et zero dans l'autre sens de façon symétrique.
Pour plus de facilité, tu peux commencer par normaliser les deux valeurs à combattre, en faisant u1 = L1/(L1+L2) et idem pour le niveau adverse.
Ensuite soit tu gardes ça directement comme probabilité de réussite:
S lvl 20 et CS lvl 10 donne 20/30 = 0.6
S lvl 40 et CS lvl 40 donne 40/80 = 0.5
S lvl 10 et CS lvl 40 donne 10/50 = 0.2
soit tu utilise une forme qui amène plus vite aux extrêmes si tu veux différencier plus vite les niveaux.
Défaut : une différence de 3 lvl ne vaut plus rien pour de haut lvl et devient énorme pour des petits. Si tu veux que la hiérarchie persiste, il faut changer d'approche. Dans ce cas,il faut travailler directement sur la différence de niveaux comme proposé par arsenine.
0.5*(1+arctan(diff)) peut donner de bon résultats, sans utiliser de if. Pour une différence de 0 tu as 0.5, et ça tend vers 1 à l'infini positif et zero dans l'autre sens de façon symétrique.