Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Algorytm rankingu?
Forum PHP.pl > Forum > PHP
swagger
Hej,

temat raczej nie do końca pasuje do subforum które wybrałem, ponieważ jest to bardziej pytanie o algorytm, nie o PHP samo w sobie. Natomiast nie znalazłem lepszego subforum.

A więc chciałbym stworzyć system rankingu który będzie działał w następujący sposób:

powiedzmy, że gracz ma punkty według których jest pozycjonowany w rankingu oraz pieniądze.

Jeżeli gracz pobije swój rekord i jego liczba punktów przewyższy punkty userów nad nim (powiedzmy, że z z miejsca 5 wskakuje na miejsce 2gie), dostanie on określoną liczbę pieniędzy które zostanąś ściągnięte z konta graczy których wyprzedził.

Natomiast, nonsensem byłoby tworzenie tego w taki sposób, aby każdemu zabierało po równo. Poza tym to potrafilbym zrobić. Chciałbym to zrobić w taki sposób, że im wyższa pozycja w rankingu, tym więcej tych pieniędzy gracz stracił.

Problem jest w tym, że nie potrafię znaleźć odpowiedniego algorytmu. Próbowałem to przeliczyć na różne sposoby i nici z tego wychodzą. Nie wiem, macie może wy jakiś pomysł?

Dzięki!
Aqu
  1. $maxGoldLost = 1000;
  2.  
  3. $player1Lost = $maxGoldLost - (1*50); // gracz nr. 1 straci 950
  4. $player2Lost = $maxGoldLost - (2*50); // gracz nr. 2 straci 900

Coś na tej zasadzie?
kartin
Pobieraj np. od graczy których wyprzedził kwotę np. X / pozycja_w_rankingu, gdzie X to jakaś ustalona kwota
swagger
Cytat(Aqu @ 24.02.2015, 18:55:50 ) *
  1. $maxGoldLost = 1000;
  2.  
  3. $player1Lost = $maxGoldLost - (1*50); // gracz nr. 1 straci 950
  4. $player2Lost = $maxGoldLost - (2*50); // gracz nr. 2 straci 900

Coś na tej zasadzie?

Niestety nie

Cytat(kartin @ 24.02.2015, 18:56:49 ) *
Pobieraj np. od graczy których wyprzedził kwotę np. X / pozycja_w_rankingu, gdzie X to jakaś ustalona kwota

Także o tym myślałem, ale to nie zwróciłoby wcześniej ustalonej kwoty. Sytuacja wygląda tak, że chciałbym wcześniej ustalić konkretną kwotę która będzie przyznana, a następnie owa kwota będzie procentowo* pobrana od użytkowników. Np:

Kwota: 100
Graczy: 5 (gracze od który powinno te pieniądze pobrać)

50
25
15
6.65
3.35

A więc, sprawdzając:
50+25+15+6.65+3.35 = 100

* = nie musi być dokłanie procentowo.

Czyli aby zabrana suma równała się zarobionej kwocie. Oczywiście, to tylko przykład. Chodzi o to, aby im wyższa pozycja w rankingu, tym więcej tracimy pieniędzy.
Aqu
Gracz 1 | Gracz 2 | Gracz 3 | Gracz 4 --- 4 graczy

x = liczba graczy + 1; // 5
Każdemu przypisałbym "wartość", czyli:
G1 = x - 1; // 4
G2 = x - 2; // 3
G3 = x - 3; // 2
G4 = x - 4; // 1

razem - 4+3+2+1 = 10 (silnia z liczby graczy)

G1 płaci 4/10 = 40%
G2 płaci 3/10 = 30%
G3 płaci 2/10 = 20%
G4 płaci 1/10 = 10%;
swagger
Zawsze najprostsze rozwiązania są najlepsze. Najwidoczniej za bardzo chciałem nakombinować i przegiąłem w drugą stronę. Dzięki! biggrin.gif

PS wybaczcie za moje literówki, nie spałem dzisiaj, a pisalem na szybko.

#ediit
Prześpię się z tym i odpowiem co i jak, bo chyba nie mam do tego głowy dzisiaj.
sazian
Cytat(Aqu @ 24.02.2015, 18:53:25 ) *
razem - 4+3+2+1 = 10 (silnia z liczby graczy)

arrowheadsmiley.png
Aqu
Ups. biggrin.gif
swagger
Wyspałem się i wymyśliłem system którego szukałem. Jakby ktoś potrzebował:

Points: 100
Players: 5

100 / 5 = 20
20 / 5 = 4

P1: 20 - 0 = 20
P2: 20 - 4 = 16
P3: 20 - 8 = 12
P4: 20 - 12 = 8
P5: 20 - 16 = 4

Total: 60

100 / 60 = 40
40 / 5 = 8

P1: 20 + 8 = 28
P2: 16 + 8 = 24
P3: 12 + 8 = 20
P4: 8 + 8 = 16
P5: 4 + 8 = 12

Total: 100

wybaczcie mi za moją gafę. Pisalem na szybko i machnąłem się o 2kę. Tutaj poprawiona wersja. tongue.gif
Pyton_000
100 / 60 = 40 blink.gif
sazian
no i cały misterny plan w p....
swagger
Miało być - tongue.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-2025 Invision Power Services, Inc.