Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Algorytm wyliczania oceny zawodnika w fifę
Forum PHP.pl > Forum > Gotowe rozwiązania > Szukam
GreenGo
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ł ?
Pyton_000
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.
GreenGo
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 :|
GreenGo
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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.