Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Szukam _ Algorytm wyliczania oceny zawodnika w fifę

Napisany przez: GreenGo 25.09.2016, 17:04:59

Cześć,
zastanawiam się nad algorytmem wyliczającym ocenę zawodnika ( gracza ) w grę fifa/PES.
Chciałbym by każdy zawodnik miał ocenę od 1 do 10 bazującą na wygranych, przegranych i ilości rozegranych meczy.
Nie wiem jak to ugryźć, by algorytm zawierał w sobie rozróżnienie na to, czy dany mecz jest rozegrany z osobą posiadającą wyższą ocenę czy niższą tak, by słaby gracz wygrywając z lepszym zyskiwał więcej niż wygrywając z kimś na własnym poziomie oraz by przegrywając z lepszym, tracił mniej niż gdyby przegrał z kimś równym sobie.

Ktoś może ma na to jakiś pomysł ?

Napisany przez: Pyton_000 25.09.2016, 17:52:30

A w czym problem.

Ustalasz sobie bazową ilość pkt które gracz zyskuje/traci. Np. 2pkt.
Jeśli wygra z lepszym +1 do bazowych == 3pkt.
Jeśli przegra z lepszym -1 czyl -1pkt.

itd. rozpisujesz sobie kombinacje i gotowe.

Napisany przez: GreenGo 25.09.2016, 18:35:07

Tylko, że chciałbym zawrzeć w algorytmie obecną ocenę zawodnika. Tak by zawodnik z oceną 9/10 grający z zawodnikiem z oceną 2/10 nie dostawał/tracił tyle samo punktów, jakby grał z zawodnikiem znacznie lepszym, np. z oceną 8/10.

Rozpatrując dla przykładu:
Mecz pomiędzy zawodnikiem 9/10 a 2/10
- wygrywa zawodnik z oceną 9/10 i dostaje np. 0.1 do oceny
- przegranemu 2/10 zostaje odjęte 0.1 od oceny

Mecz pomiędzy 9/10 a 8/10
- wygrywa zawodnik z oceną 9/10 i dostaje np. 0.5 do oceny bo grał z zawodnikiem na podobnym poziomie
- przegranemu 8/10 odejmuje się np. 0.5 od oceny, gdyby przegrał ze słabszym od siebie to odjęło by się np. 0.8.

No i właśnie nie wiem jak wyliczyć, by to odejmowanie/dodawanie punktacji na bazie różnicy ocen zawodników, miało ręce i nogi.

Jeśli ktoś gra w jakieś gry online, to można się tam spotkać z rankingiem MMR na bazie którego, z tego co wiem, wyszukiwani są przeciwnicy na podobnym poziomie.

Jedyne co mi przychodzi do głowy i chyba nie jest takie złe, to po prostu wygranemu, brać różnicę ocen i na jej bazie liczyć punkty. Wygrany dostaje 9 - różnica, przegrany traci 9 - różnica.
W takim przypadku, miałbym sumę punktów, która odzwierciedla "poziom" gracza, ale szczerze mówiąc nie wiem jak miałbym to przekształcić na ocenę 1 - 10 :|

Napisany przez: redeemer 26.09.2016, 08:30:34

Zobacz na "gotowe algorytmy" wykorzystywane np w turniejach szachowych:

http://szachmistrz.pl/jak-obliczyc-normy-na-kategorie-szachowe.html
https://pl.wikipedia.org/wiki/System_Buchholza
https://pl.wikipedia.org/wiki/System_Sonneberga-Bergera
https://pl.wikipedia.org/wiki/Metoda_progresji

Napisany przez: GreenGo 26.09.2016, 11:13:58

Dzięki, poczytałem i ostatecznie postawiłem na algorytm ELO, również stworzony dla szachistów. W prawdzie nie zrobie z tego oceny 1 - 10 ale przynajmniej bardzo dobrze odzwierciedla poziom graczy smile.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)