Calcul des points : la faille
726 Nachricht(en) normal
Zeige 321 bis 340 von 726 Einträgen
10/11/2009 14:45
#321
Je crois que j'ai dit une connerie par rapport à la boucle donnée...
Je viens de relire le code et en fait, cette boucle sert à faire le classement, c'est à dire à mettre devant chaque score le 1, 2 ou 3 du 1er, 2ème ou 3ème, etc... et elle se base sur les points records déjà calculé en base O_O
Faut que je vois avec bart comment et ou sont calculé les pointsRecords, et je vous tiens au courent...
Je viens de relire le code et en fait, cette boucle sert à faire le classement, c'est à dire à mettre devant chaque score le 1, 2 ou 3 du 1er, 2ème ou 3ème, etc... et elle se base sur les points records déjà calculé en base O_O
Faut que je vois avec bart comment et ou sont calculé les pointsRecords, et je vous tiens au courent...
10/11/2009 14:56
#322
Arcade :
serial le soucis avec ton calcul c'est que le problème de wii sport n'est pas résolu.
A savoir que si le gars fait 299 au bowling au lieu de 300, il perd une quantité incroyable de points, à cause d'une petite quille.
Avec le système actuel:(exemple du bowling :159 j, 37 personnes premières)
1er=15900
38ème=175
avec ma formule
k^1.7 =(11977/12720)^1.7 =0.9 (k à ameliorer car pour un nombre important de joueurs, il est encore trop gros pour (23% DES joueurs premiers(159 joueurs))
Pour l'instant:
1er=13292+10
38ème=1452+10
Remarque:
Attention, le joueur ayant 299 (38ème) à peut être 1pt de différence avec les 37 premiers(300) mais il ne faut pas oublier qu'il s'est fait battre par 37 personnes. Il doit avoir le score d'un 38ème et non d'un 2ème.
Ce qui n'empeche pas non plus de réduire un écart trop important dans ce cas-ci
10/11/2009 20:45
#323
11/11/2009 08:51
#324
Au fait, à chaque fois que quelqu'un poste un score sur une épreuve, il faut recalculer tous les points de tous ceux qui ont un score sur cette épreuve de toutes façons, non ?
On pourait m'expliquer pourquoi utiliser le nombre de joueurs que l'on bat strictement dans la formule des points est mauvais pour la complexité ?
Et aussi, vous voulez toujours qu'une épreuve seule puisse rapporter au(x) premier(s) un nombre arbitrairement grand de points selon le nombre de joueurs/scores différents ?
Si quelqu'un poste un nouveau score juste au-dessus du mien, je vois pas pourquoi mes points devraient augmenter avec ce changement.
On pourait m'expliquer pourquoi utiliser le nombre de joueurs que l'on bat strictement dans la formule des points est mauvais pour la complexité ?
Et aussi, vous voulez toujours qu'une épreuve seule puisse rapporter au(x) premier(s) un nombre arbitrairement grand de points selon le nombre de joueurs/scores différents ?
Si quelqu'un poste un nouveau score juste au-dessus du mien, je vois pas pourquoi mes points devraient augmenter avec ce changement.
11/11/2009 09:15
#325
Tu gagnes plus de points si quelqu'un poste en-dessous de toi car ça veut dire que ton score est d'autant plus méritant puisque tu as battu une personne de plus 
Le nombre de personnes en-dessous de toi est mauvais car il me semble que ça fait faire beaucoup de calculs au serveur et que c'est lourd pour lui

Le nombre de personnes en-dessous de toi est mauvais car il me semble que ça fait faire beaucoup de calculs au serveur et que c'est lourd pour lui
11/11/2009 11:18
#326
Doraki :
On pourait m'expliquer pourquoi utiliser le nombre de joueurs que l'on bat strictement dans la formule des points est mauvais pour la complexité ?
Pour savoir combien de personnes on bat strictement on doit connaitre le nombre d'égalité à chaque rang. Du coup cela nous oblige à faire une boucle au préalable, et cela est mauvais pour la complexité. Si on pouvait faire tous les calculs avec une unique boucle ce serait mieux.
serialbuscontroler :
-->la formule de BlackShark gére bien les égalités, mais il y a le reste.Plusieurs problème apparaissent:
*ça formule donne beaucoup de pts aux derniers
ex:91/100 (avec des égalités en plus )-->700 pts
*l'écart est le même entre le 1er et le 2ème ; le 49ème et le 50ème ou le 99ème et le 100ème.
*boucle while+le score n'est pas directement calculé
On peut toujours tenter de régler ça, avec les nouvelles formules :
- Nb de PointsRecords pour un joueur k-ème sur n : (k différent de 1)
100*(n+1-k)*(0.99)^(k-1)+10
- Nb de PointsRecords pour \"e\" égalités à la première place parmi n posts :
90*(n+1-e)*(0.99)^(e-1) + 10(n+1)
On aurait ces nouveaux résultats :
Cas avec 1 score :
1. => 110pts
Cas avec 10 scores différents
1. => 1 010pts
2. => 901pts
3. => 794pts
4. => 689pts
5. => 586pts
6. => 485pts
7. => 386pts
8. => 289pts
9. => 194 pts
10. => 101pts
Cas avec 10 scores égaux :
1. => 192pts
Cas avec 100 scores différents :
1. => 10 010pts
2. => 9 811pts
3. => 9 615pts
4. => 9 421pts
5. => 9 231pts
[...]
10. => 8 323pts
11. => 8 149pts
[...]
20. => 6 702pts
21. => 6 553pts
[...]
96. => 202pts
97. => 162pts
98. => 123pts
99. => 84pts
100. => 46pts
Cas avec 10 égalités puis 90 scores différents :
1. => 8 491pts
[...]
1. => 8 491pts
11. => 8 149pts
[...]
100. => 46pts
Cas avec 20 égalités puis 100 scores différents :
1. 7 032pts
[...]
1. 7 032pts
21. 6 553pts
[...]
100. => 46pts
Cas avec 10 égalités, puis 10 égalités, puis 10 égalités ... :
1. => 8 491pts
[...]
1. => 8 491pts
11. => 8 149pts
[...]
11. => 8 149pts
21. => 6 553pts
[...]
21. => 6 553pts
31. => 5 187pts
[...]
81. => 905pts
[...]
81. => 905pts
91. => 414pts
[...]
91. => 414pts
11/11/2009 11:34
#327
BlackShark :
Pour savoir combien de personnes on bat strictement on doit connaitre le nombre d'égalité à chaque rang. Du coup cela nous oblige à faire une boucle au préalable, et cela est mauvais pour la complexité. Si on pouvait faire tous les calculs avec une unique boucle ce serait mieux.
Même si ce que tu disais était vrai, calculer les points de chaque joueur en faisant deux boucles consécutives au lieu d'une seule n'est pas vraiment un problème, c'est toujours linéaire en nombre de joueurs.
11/11/2009 11:40
#328
Doraki :
Même si ce que tu disais était vrai, calculer les points de chaque joueur en faisant deux boucles consécutives au lieu d'une seule n'est pas vraiment un problème, c'est toujours linéaire en nombre de joueurs.
Non pas exactement, quand tu fais une autre boucle tu insères au moins une variable supplémentaire. Par exemple si tu fais une \"boucle for\" supplémentaire, tu as un \"i\" allant de 1 à n qui est caché (pour une boucle while tu insérerais également un \"compteur\" histoire de visiter tous les rangs). Et à chaque tour de boucle tu as le i=i+1 qui fait une opération supplémentaire. Donc pour cette opération tu le ferais deux fois répartis sur deux boucles alors que dans une seule boucle tu ne le ferais qu'une seule fois.
11/11/2009 11:45
#329
11/11/2009 11:49
#330
11/11/2009 11:55
#331
11/11/2009 12:35
#332
Dans nos formules il n'est pas question de calculer le nombre d'égalité et sur ce qu'on a vu jusque là on a au mieux (point de vue complexité et pour régler le soucis des égalités) trouvé des formules utilisant (dans le pire cas point de vue calcul) des puissances. Donc pour deux formules de complexité équivalente on préférera la formule qui ne demandera pas une boucle supplémentaire.
Si tu as une formule qui règle aussi bien, voir mieux, le soucis des égalités et en plus qui demande moins de calculs, tu peux toujours l'exposer. ^^
Si tu as une formule qui règle aussi bien, voir mieux, le soucis des égalités et en plus qui demande moins de calculs, tu peux toujours l'exposer. ^^
11/11/2009 12:58
#334
Je n'ai pas répondu parce que ce n'est pas le cas :
Dernier sur un score : 110pts
Dernier sur dix scores : 101pts
Dernier sur 100 scores : 46pts
(voir page précédente)
Et si tu me réponds \"j'ai répondu ça avant ta nouvelle formule\" ce n'était pas le cas avec la formule précédente non plus :
Dernier sur un score : 100pts
Dernier sur dix scores : 96pts
Dernier sur 100 scores : 69pts
Dernier sur un score : 110pts
Dernier sur dix scores : 101pts
Dernier sur 100 scores : 46pts
(voir page précédente)
Et si tu me réponds \"j'ai répondu ça avant ta nouvelle formule\" ce n'était pas le cas avec la formule précédente non plus :
Dernier sur un score : 100pts
Dernier sur dix scores : 96pts
Dernier sur 100 scores : 69pts
11/11/2009 13:28
#335
11/11/2009 14:44
#337
Ma formule, ma calculatrice qui fonctionne étrangement et mon pseudo code ne finissent plus de s'améliorer grâce à tes remarques constructives Doraki.
Pour ton soucis on pourrait régler avec ceci :
Nb de PointsRecords pour \"e\" égalités à la k-ème place parmi n posts :
10*(n+1-k)*(0.99)^(k-1)+ 90*(n+2-k-e)*(0.99)^(k+e-2) + 10
Ton 1er cas :
1. => 234
1. => 234
1. => 234
1. => 234
5. => 106
Ton 2ème cas :
1. => 610
2. => 232
2. => 232
2. => 232
2. => 232
6. => 105
Pour ton soucis on pourrait régler avec ceci :
Nb de PointsRecords pour \"e\" égalités à la k-ème place parmi n posts :
10*(n+1-k)*(0.99)^(k-1)+ 90*(n+2-k-e)*(0.99)^(k+e-2) + 10
Ton 1er cas :
1. => 234
1. => 234
1. => 234
1. => 234
5. => 106
Ton 2ème cas :
1. => 610
2. => 232
2. => 232
2. => 232
2. => 232
6. => 105
11/11/2009 17:02
#339
Mwahaha je t'ai fait utiliser le nombre p de personnes qu'on bat strictement (n+2-k-e),
et le nombre m de personnes qui nous battent strictement (k-1)
soit 10*(n-m)*(0.99)^m + 90*(p+1)*(0.99)^(n-p-1) + 10.
Alors pour la suite du débat,
Si il y a 10*x joueurs qui sont tous ex aequo pour la 1ère place, donc sur une épreuve absolument trop facile, ils gagnent à peu près autant de points que quelqu'un qui est 1er strict sur x joueurs.
Aussi, l'idée que plus une épreuve a des joueurs, plus on peut potentiellement gagner de points, fait que pour des scores moyens, on a beaucoup plus intérêt à les poster sur des jeux où déjà plein de monde joue que sur des jeux ou personne ne joue.
Donc il y a un cercle vicieux qui fait que ceux qui cherchent des points vont sur les jeux populaires et délaissent les jeux qui ont besoin de joueurs.
Sur cyberscores, on ne ne peut pas avoir plus de 100 points sur une épreuve, ce qui réduit ce phénomène de plus une épreuve est populaire, plus elle devient encore plus populaire.
Je repropose un truc genre : 1+999*(p+1)/(n+m+9), qui a les bonnes propriétés :
Un joueur seul sur une épreuve marque 100 points.
Plus on me bat, moins mon score est bon.
Plus je bats des gens, plus mon score est bon.
Si je monte dans le classement, mon score augmente.
Si je descends dans le classement, mon score diminue.
Ce qui se passe ailleurs dans le classement ne modifie pas mon score (cf la mauvaise idée d'utiliser le nombre de scores différents globalement)
(comme la formule de black_shark si je ne m'abuse)
Mais avec en plus :
On ne peut jamais avoir plus de 1000 points.
Si quelqu'un égalise mon score, mon score diminue.
Un score où tout le monde est 1er ex aequo vaut de moins en moins de point, parceque bon ça veut dire que c'est facile quoi.
Les écarts de points sont environ deux fois plus importants entre les joueurs bien placés qu'entre les joueurs mal placés. (on peut un peu bidouiller là dessus au besoin)
Prendre 1+999*(p+1)²/(n+m+9)/n accentue beaucoup cette différence, mais pénalise encore plus les scores avec plein de 1ers ex aequos
et le nombre m de personnes qui nous battent strictement (k-1)
soit 10*(n-m)*(0.99)^m + 90*(p+1)*(0.99)^(n-p-1) + 10.
Alors pour la suite du débat,
Si il y a 10*x joueurs qui sont tous ex aequo pour la 1ère place, donc sur une épreuve absolument trop facile, ils gagnent à peu près autant de points que quelqu'un qui est 1er strict sur x joueurs.
Aussi, l'idée que plus une épreuve a des joueurs, plus on peut potentiellement gagner de points, fait que pour des scores moyens, on a beaucoup plus intérêt à les poster sur des jeux où déjà plein de monde joue que sur des jeux ou personne ne joue.
Donc il y a un cercle vicieux qui fait que ceux qui cherchent des points vont sur les jeux populaires et délaissent les jeux qui ont besoin de joueurs.
Sur cyberscores, on ne ne peut pas avoir plus de 100 points sur une épreuve, ce qui réduit ce phénomène de plus une épreuve est populaire, plus elle devient encore plus populaire.
Je repropose un truc genre : 1+999*(p+1)/(n+m+9), qui a les bonnes propriétés :
Un joueur seul sur une épreuve marque 100 points.
Plus on me bat, moins mon score est bon.
Plus je bats des gens, plus mon score est bon.
Si je monte dans le classement, mon score augmente.
Si je descends dans le classement, mon score diminue.
Ce qui se passe ailleurs dans le classement ne modifie pas mon score (cf la mauvaise idée d'utiliser le nombre de scores différents globalement)
(comme la formule de black_shark si je ne m'abuse)
Mais avec en plus :
On ne peut jamais avoir plus de 1000 points.
Si quelqu'un égalise mon score, mon score diminue.
Un score où tout le monde est 1er ex aequo vaut de moins en moins de point, parceque bon ça veut dire que c'est facile quoi.
Les écarts de points sont environ deux fois plus importants entre les joueurs bien placés qu'entre les joueurs mal placés. (on peut un peu bidouiller là dessus au besoin)
Prendre 1+999*(p+1)²/(n+m+9)/n accentue beaucoup cette différence, mais pénalise encore plus les scores avec plein de 1ers ex aequos
11/11/2009 17:08
#340
Zeige 321 bis 340 von 726 Einträgen
You must be logged in to reply to this topic.