Calcul des points : la faille

726 messages normal

Affichage de 421 à 440 sur 726 éléments
27/10/2010 15:22
#421
Flo233 144 messages
Ce systeme de calcul est pas mal en ce qui concerne les scores max faciles mais il penalise les joueurs qui vont chercher des scores max peu evident a realiser.
Mais j'avoue que c'est toujours mieux que le systeme actuel.
27/10/2010 15:50
#422
Ca m'a l'air correct smile, en plus la formule est plus simple que celles précédemment citées.
Elle me rappelle une autre formule, qui avait été proposée (vers le milieu de ce topic) et où le problème était qu'à la suite d'égalité, les 2ème ex-æquo gagnaient moins que le 4ème mais ça n'a pas l'air d'être le cas ici.
(avis de recherche: si quelqu'un la retrouve)


Le seul souci, c'est que cette formule gonfle assez les égalités
ex :1er sur 3 => 300pts
4 1er sur 4 => 295pts chacun
27/10/2010 16:13
#423
niconoe 3902 messages
bien vu pour ta remarque serial.
Pourquoi pas mettre un coefficient en plus de la moyenne dans se cas ?
Cas de coefficient constant :
1.       x = moyenne()/CONSTANTE
Cas de coefficient variable :
2.       x = moyenne()*f(n)
    Avec f(n): N->R où n représente le nombre d'égalité
3.       x = moyenne()*f(n,r)
    Avec f(n,r): N²->R où n représente le nombre d'égalité et r le rang de cette égalité

Concrètement, chaque point signifie ceci :

1. La moyenne obtenue par chaque égalité est divisée toujours de la même manière afin de la réduire un peu car 4 1er est moins intéressant que 1er sur 3 tout seul, pour reprendre la remarque de serial (quoique cela peut se justifier par l'apparition de ce 4ème joueur).

2. La moyenne est d'autant plus réduite qu'il y a des égalités. Plus il y a d'égalité, plus la moyenne sera petite, sans pour autant passer sous le nombre de point du joueur suivant.

3. La moyenne est d'autant plus réduite qu'il y a d'égalités pour un certain rang d'égaux défini. Ainsi, on peut mieux gérer les multiples égalités sur un même classement (ex: 1,1,3,3,5,5,5,8,8). L'inconvénient majeur est que dans ce cas, il reste à décider de la variation à opérer entre les rangs : doit-on réduire plus les 1ers ou les derniers ?

On peut aussi faire des fonctions avec pour paramètres le nombre de post, etc... mais je pense que c'est trop se prendre la tête. Déjà cette histoire de coefficient va prendre la tête à tous ceux qui ne sont pas matheux...

Je précise que les 3 points sont classés par ordre de simplicité et de temps de calcul, donc si vous voulez un système de calcul de point plutôt rapide, je déconseille le 3. smile
27/10/2010 16:34
#424
Pour cette formule:
Cas de coefficient constant :
     x = moyenne()*0.9

il y a de forte chance qu'il y ai des égalités qui rapportent moins que la place qu'elles précédent (ex les 7èmes ex-æquo gagnent moins que le 10ème)à moins que cela est appliqué à l'ensemble du classement, ce qui n'est pas forcement juste si l'égalité n'est pas à la première place.


Pour un coefficient variable, pourquoi pas! La difficulté est de définir la fonction f

elle doit vérifier au moins ceci(valable si l'on prends 80% à chaque fois au lieu de 80, puis 81% puis 82% etc :

soit x le nb de pts que l'on gagne à une place P (sans égalité)
alors les pts en cas d'égalités à cette place sont :
((O,8^n)*x)/n où n est le nombre de joueurs ex-aequo à cette place

et ((O,8^n)*x)/n > au nb de pts de la place P+N=1

27/10/2010 16:38
#425
elpierrot17 3325 messages
Meme si je peux comprendre, ça devient complexe de reflechir o)

Fin si je comprend bien, en clair, les egalité on donne une pourcentage, et ensuite si les egalité sont au loin, dans ce cas moins grave, mais s'il y'a un tie 34e par ex, pourquoi on ne laisserai pas en mode normal?
27/10/2010 16:50
#426
niconoe 3902 messages
Pour répondre à serial, je sais déjà qu'il faut que la constante appartienne à [0.99;1] pour éviter les égalités rapportant moins de point d'en dessous sur les rangs > 30

Donc ça pue un peu, d'autant plus que vu qu'on tronque les points pour les faire passer de R à N, on va très vite tomber au minimum de point gagnable pour des rangs > 80~90

Pour le cas n°2 et 3, il faut que f(a) ou f(a,b) [0.8;1] avec la condition en plus suivante :
Soit fn(x) la fonction f appliquée au rang n, moyenne()*fn(x) > p(n+1) où p(x) est la fonction renvoyant le nombre de points gagnés par le joueur situé au rang x.

Encore plus compliqué à définir pour la 3. Sans compter les boucle de répétitions que ça va donner dans le script... vive la lenteur hum
28/10/2010 02:29
#427
niconoe 3902 messages
Bon, après étude approfondie, l'histoire de la moyenne est correcte et on va garder.
Le souci qui se pose c'est le choix de la formule qui permet d'avoir le tableau des points en fonction du nombre de posts.

Actuellement, j'utilise la fonction actuelle mais l'inconvénient est que pour un échantillon de 1000 posts (sans égalités), on obtient le minimum de point (10) à partir du 330ème rang.

Si blackshark ou un autre membre a la possibilité de trouver une formule qui satisfasse l'ensemble des conditions suivante, alors c'est parfait :

- La fonction y=f(x) avec y le nombre de point et x le rang doit être strictement décroissante sur tout N/{[0,MIN[}
- si x = n, le nombre de posts total (x est donc le dernier rang), alors f(x) >= MIN
- si x = n, le nombre de posts total (x est donc le dernier rang) et que f(x) = MIN, alors pour tout x' < n, f(x') > MIN

Avec MIN la constante de points gagné minimum actuellement fixée à 10 mais devant pouvoir être modifiable si l'on souhaite modifier le minimum gagné.

Je vais chercher de mon coté mais je promet rien de bon.
Actuellement, aucun type de variation particulier entre les rangs n'est demandé et il ne faut pas tenir compte des égalités (calculées plus tard avec les moyennes)
28/10/2010 03:21
#428
elpierrot17 3325 messages
Si tu multiplie par 100 voir 1000 les points, le probleme ne serait pas reglé, en gardant 10 pour minimum?
28/10/2010 10:54
#429
NPlay 2179 messages
Hum, il y a des records qui rapportent moins de 10 points à leur auteur ok
28/10/2010 11:03
#430
La formule idéale serait celle utilisé pour le classement skill points (temps officiel) de Trackmania, malheureusement je ne la connais pas.
Elle pourrait être estimée, pour cela il faudrait plusieurs valeurs pour pouvoir la déterminer.
28/10/2010 13:10
#431
niconoe 3902 messages
NP => si cela est vrai, cela sera corrigé
pierrot => non car di la fonction est décroissante, elle baisse en fonction du rang et que tu prennes 10 ou 1 million, arrivé à un moment tu va tomber en négatif si tu prends une fonction toute conne sans réfléchir.

serial => si t'as un lien pour que je puisse voir 2-3 classement de point voir si ça conviendrait avec VGR, ça serai sympa smile
28/10/2010 13:40
#432
elpierrot17 3325 messages
Okok, moi je pense juste que plus de point permettrait plus de competition dans les fond de classement, et apres en tete y'aura la blinde d'ecart :bave:

Apres ça reste mon avis mais je prefere un systeme avec 100x plus de point, mais en partant d'exactement le meme principe
28/10/2010 16:45
#433
Arcade 1789 messages

serialbuscontroler :

La formule idéale serait celle utilisé pour le classement skill points (temps officiel) de Trackmania, malheureusement je ne la connais pas.
Elle pourrait être estimée, pour cela il faudrait plusieurs valeurs pour pouvoir la déterminer.


Non surement pas, cette formule est justement complètement foiré, dans le sens où tu peux gagner 1 million de points en passant de la 2eme à la 1ere place. Les écarts à haut niveau sont incroyablement grands.
28/10/2010 16:54
#434

Arcade :

serialbuscontroler :

La formule idéale serait celle utilisé pour le classement skill points (temps officiel) de Trackmania, malheureusement je ne la connais pas.
Elle pourrait être estimée, pour cela il faudrait plusieurs valeurs pour pouvoir la déterminer.


Non surement pas, cette formule est justement complètement foiré, dans le sens où tu peux gagner 1 million de points en passant de la 2eme à la 1ere place. Les écarts à haut niveau sont incroyablement grands.


Les écarts sont incroyablement grands parce qu'il y a incroyablement du monde.
La formule de VGR, appliqué à 10000 personnes (exemple) verra elle aussi un écart de 0,2 millions de pts entre le 1er et le 2ème. yes
28/10/2010 17:28
#435
Arcade 1789 messages
C'est justement un des problèmes qu'on veut changer.
Battre un joueur dans un classement de 10.000 personnes ne devrait pas rapporter autant que battre 2000 joueurs sur un classement de 2000 personnes.
04/11/2010 22:37
#436
lapogne36 51 messages
J'aime bien la formule, je ne l'ai pas regardé en détail mais au moins j'ai bien l'impression que sur les records avec beaucoup de 1er, on leur donne un nombre de points qui correspond à la difficulté pour le faire (moins de 700 s'il y a très peu de non 1er).

Sinon pour NP, j'ai un peu fouillé et avec la formule actuelle, il semble qu'un record puisse offrir moins de 10 points seulement à partir de 160 posteurs sur ce record, ce qui est si je ne m'abuse l'exclusivité d'une poignée de records de wii sport.

Par rapport à ta formule, je pense que ça serait intéressant d'avoir un A assez élevé aux rangs proche de 1, puis de le faire descendre un peu (au pif on va dire aux alentours de 0.80) et enfin de le faire tendre vers 0.99 . Ça permettrait de régler le problème posé du trop grand écart de points entre le 1er et ses poursuivants.

Un exemple possible et facilement modifiable à souhait :

A = [80+20(abs(x-n)/x)]/100 si A<0.99 , A = 0.99 sinon
avec x = nombre de posts sur le record divisé par 2
abs(x-n) = valeur absolu de (x-n)

avec un tel système, les plus grandes variations de points se produiraient au milieu du classement, et inciteraient donc à l'amélioration des scores \"moyens\", ce qui je pense est assez souhaitable (bon allez-y, vous pouvez vous plaindre de toutes les conneries que j'ai peut être dis sans le savoir maintenant damn )
05/11/2010 15:00
#437
niconoe 3902 messages
J'ai adapté ta formule mais elle ne donne pas de résultats satisfaisants...
Par contre, ton idée de creuser les écarts sur les rangs médian est intéressante.

J'en ai découlé les propriétés de la fonction suivante permettant de calculer les points à attribuer sur un classement variable et sans égalité.

soit Cn(x) la courbe représentant la fonction fn(x) à définir sachant que :
- fn(x) est la fonction définissant le nombre de points à attribuer pour un classement de n membres sans égalités au rang x
- fn(x) est strictement décroissante pour tout n dans [1;+inf[
- fn(x) a un maximum en x = 1
- fn(x) a un minorant (le minimum de points à gagner)
- Pour un n suffisamment grand, si fn(x) = min(fn(x)) alors pour tout p dans [x;n] fn(p) = min(fn(x)).
- Si il existe des tels p, alors soit p' le plus petit p, l'équation de la tangente à Cn(x) au point p' est y = -x
- f'n(1), la dérivée de fn(x) au point 1, vaut 0.
- Pour tout x dans [1;n], f'n(n/2) >= f'n(x) (f'n(n/2) est donc un minimum local pour x dans [1;n])
- La courbe Cn(x) décroit de plus en plus rapidement jusqu'à x = n/2 puis décroit de moins en moins rapidement mais doit toujours continuer à décroitre jusqu'au minimum de fn(x). La vitesse de décroissement n'est pas obligatoirement symétrique en n/2.

J'ai alors pensé à une courbe des points définis par une courbe de Béziers de degré 3 :
http://img294.imageshack.us/img294/449/beziersplines.png"
Ici la courbe avec les points noirs

Le problème est que je n'arrive pas à déterminer une équation de cette fonction.
Le dessin étant sans échelle, voici quelques propriétés :
- la droite en rouge sur le dessin représentant les points de départ (P0) et d'arrivée (P3) de la construction de la courbe de Béziers doit former un angle avec l'axe des abscisses tel que si le point servant d'amplitude à la courbe (P2) soit situé au milieu de [P0P3], l'équation de la tangente au point P3 soit y = -x pour un n suffisamment grand. Dans un cas de n insuffisamment grand, la droite en rouge sur le dessin est elle-même d'équation y = -x et P2 est toujours situé au milieu de [P0P3].
- Le point P3 doit être situé sur la droite d'équation x=MIN (MIN étant le minimum de point que l'on peut gagner).
- Soit £ le plus petit coefficient d'écart de point sur la courbe tel que fn(2) = (1-£)*fn(1), et A le point de coordonnées (1;MIN), le dernier point influent sur la génération de la courbe de Bézier (P1) a pour coordonnées ((1-£)*||AP3||;(1-£)*||AP0||).
(£ = epsilon)


Impossible pour moi d'en faire une application x->f(x), mais si l'un d'entre-vous arrive à me trouver une fonction en x^3 qui satisfasse toutes ses conditions (ce sera donc une fonction de Bézier), alors je pense qu'on sera très très très bon.
Pour le cas de l'égalité, on prend toujours la moyenne des points qu'on va trouver pour le classement généré par fn(x) (en fonction de n bien évidemment), avec x variant pas à pas par pas de 1, de 1 à n. Comme fn(x) est décroissante pour tout n, on a aucun risque qu'une égalité donne plus de points qu'une non-égalité.

Bon courage à ceux qui veulent chercher l'équation de la fonction de Bézier.
Un coup de pouce quand même, la forme paramétrée de la courbe Cn(x) est :
P(t) = P0(1-t)^3 + 3*t*P1*(1-t)² + 3*t²*P2*(1-t) + P3*t^3

Parait que c'est loin d'être simple de passer de la forme paramétrée d'une courbe à l'équation de la fonction qui la défini. Prouvez-moi le contraire lol !
06/11/2010 18:49
#438
BlackShark 5954 messages

niconoe :

Bon, après étude approfondie, l'histoire de la moyenne est correcte et on va garder.
Le souci qui se pose c'est le choix de la formule qui permet d'avoir le tableau des points en fonction du nombre de posts.

Actuellement, j'utilise la fonction actuelle mais l'inconvénient est que pour un échantillon de 1000 posts (sans égalités), on obtient le minimum de point (10) à partir du 330ème rang.

Si blackshark ou un autre membre a la possibilité de trouver une formule qui satisfasse l'ensemble des conditions suivante, alors c'est parfait :

- La fonction y=f(x) avec y le nombre de point et x le rang doit être strictement décroissante sur tout N/{[0,MIN[}
- si x = n, le nombre de posts total (x est donc le dernier rang), alors f(x) >= MIN
- si x = n, le nombre de posts total (x est donc le dernier rang) et que f(x) = MIN, alors pour tout x' < n, f(x') > MIN

Avec MIN la constante de points gagné minimum actuellement fixée à 10 mais devant pouvoir être modifiable si l'on souhaite modifier le minimum gagné.

Je vais chercher de mon coté mais je promet rien de bon.
Actuellement, aucun type de variation particulier entre les rangs n'est demandé et il ne faut pas tenir compte des égalités (calculées plus tard avec les moyennes)


Je préviens d'avance, je me suis arrêté à ce message. lol

Alors voilà ce que je propose :

http://img51.imageshack.us/img51/8672/grapheformule.jpg"

Sur le graphique les abscisse représente le classement, et les ordonnées représente le nombre de points. Le but initial de l'idée c'était de trouver une courbe emprisonné entre les deux droites bleus et rouges, de telle sorte que plus on s'approche de la fin du classement plus la courbe va \"s'écraser\" vers la droite rouge. Cette droite rouge a pour but que même en fin de classement il y a des écarts entre chaque joueurs.

Je suis parti avec le fait que le premier a N*100pts, et le minimum d'écart entre deux joueurs est de 10pts, quelque soit le nombre de joueurs. De plus gagner une place en haut de classement rapporte plus que gagner une place en fin de classement.

J'ai donc déterminé une formule qui a cette allure (ici l'exemple de 300 joueurs) :

http://img210.imageshack.us/img210/6827/n300.jpg"

Voici maintenant la formule en question :

SI N=1 y=100
SINON
y = (-100 x + N*100+100) (1 - (x - 1) / (N-1))² + (-10 x + N*10+100) (1 - (1 - (x - 1) / (N-1))²)

N représente le nombre de joueurs sur le record.
x représente le classement du joueur en question.

De nombreuses choses peuvent être ajustées : le nombre de points minimal entre deux joueurs (même dans les fonds de classement avec énormément de joueurs), la \"vitesse\" de descente des points... etc.

Voici des résultats :

N=1

1 joueurs :

1. 100


N=2

2 joueurs :

1. 200
2. 100


N=3

3 joueurs :

1. 300
2. 132
3. 100


N=4

4 joueurs :

1. 400
2. 200
3. 120
4. 100


N=5

5 joueurs :

1. 500pts
2. 281pts
3. 165pts
4. 115pts
5. 100pts


N=6

6 joueurs :

1. 600pts
2. 370pts
3. 227pts
4. 148pts
5. 113pts
6. 100pts


N=7

7 joueurs :

1. 700pts
2. 462pts
3. 300pts
4. 197pts
5. 140pts
6. 112pts
7. 100pts


N=8

8 joueurs :

1. 800pts
2. 556pts
3. 379pts
4. 257pts
5. 179pts
6. 134pts
7. 111pts
8. 100pts


N=9

9 joueurs :

1. 900pts
2. 652pts
3. 463pts
4. 325pts
5. 230pts
6. 167pts
7. 131pts
8. 111pts
9. 100pts


N=10

10 joueurs :

1. 1.000pts
2. 748pts
3. 551pts
4. 400pts
5. 288pts
6. 211pts
7. 160pts
8. 128pts
9. 111pts
10. 100pts


N=50

50 joueurs :

1. 5.000pts
2. 4.725pts
3. 4.461pts
4. 4.208pts
5. 3.965pts
6. 3.733pts
7. 3.510pts
8. 3.297pts
9. 3.093pts
10. 2.899pts
...
41. 217pts
42. 199pts
43. 182 pts
44. 168pts
45. 154pts
46. 142pts
47. 131pts
48. 120pts
49. 110pts
50. 100pts


N=300

300 joueurs :

1. 30.000pts
2. 29.721pts
3. 29.444pts
4. 29.168pts
5. 28.894pts
6. 28.622pts
7. 28.352pts
8. 28.084pts
9. 27.817pts
10. 27.552pts
...
20. 24.999pts
...
50. 18.330pts
...
100. 10.154pts
...
150. 4.997pts
...
200. 2.106pts
...
250. 725pts
...
291. 190pts
292. 180pts
293. 170pts
294. 160pts
295. 150pts
296. 140pts
297. 130pts
298. 120pts
299. 110pts
300. 100pts
06/11/2010 18:52
#439
elpierrot17 3325 messages
Hum pas mal le resultat, pas trop envie de reflechir sur les courbes, pas facile a faire vos suites :o
06/11/2010 19:13
#440
Hraesvelg 711 messages
Euh j'trouvais cette formule superbe jusqu'au deux derniers exemples :


Avec 50 joueurs y'a 275 pts d'écart entre le premier et le deuxième, et avec 300 joueurs y'a 279pts et le deuxième a presque autant de points que le premier, alors que par exemple sur des petites valeur y'a entre 30 et 150% de pts supplémentaires à gagner.

Alors que de 29721 à 30000 y'a une augmentation de moins d'1% O_o, ce qui est pas très motivant.


(A moins que ça soit ce qui est voulu? hidden )
Affichage de 421 à 440 sur 726 éléments
Vous devez être connecté pour répondre à ce sujet.
Choisir un thème

Défaut

Gaming

Nintendo

Sega

Sony

Xbox

Capcom

Bandai Namco

EA

Ubisoft

Square Enix

Licences