PHP szavazórendszer pontszámító algoritmus?
Szóval, tegyük fel, van a Pista és a Sanyi, mind a ketten már tagok az oldalon.
Pistának van 3 képe, amelyeken összesen 30 tetszik és 14 nem tetszik van. Átlagolva ez 22. Tehát Pistának 22 pontja van.
Sanyinak van 6 képe, amelyeken összesen 40 tetszik és 1 nem tetszik van. Átlagolva és kerekítve 21 pontja van Sanyinak.
Szóval ezért nem jó az átlagolás. Jelen pillanatban a példában elméletileg Sanyi sokkal menőbb, mint Pista, mivel több tetszik és kevesebb nem tetszik van a képein mint Pistának, de mégis Sanyi a 2, mert átlagolva lett kiszámolva a pontjuk.
Jelen esetben ez az átlagszámítás messze nem igazságos.
Használd az egyet előre egyet hátra módszert: a like-ok számából vond ki a dislike-t, és oszd el a képek számával.
Vagy súlyozd a like-okat és a dislike-okat. Egy like 5 pont, egy dislike 1 pont. De ez esetben is jobb lenne ha képenként kapná a pontokat a tulaja, mintha egy nagy átlagot dobnál fel.
A nagy átlagpontszámba persze más tényezők is beleszámíthatnak, pl mióta tag, hány ismerőse van, hányszor értékelte már mások képeit, stb...
Hát oszd el az eredményt a képek számával is, nagy cucc...
(30 + 14) / 2 / 3 = 7.3
(40 + 1) / 2 / 1 = 20.5
Ha számít a képek mennyisége is, akkor még adj hozzá annyi pontot, amennyi képet feltöltött, így ez az eredmény jön ki:
(30 + 14) / 2 / 3 + 3 = 10.3
(40 + 1) / 2 / 1 + 1 = 21.5
Utolso:
1-el osztottad a 6 helyett, a te logikad szerint is a benabb kap tobb pontot.
Bocsi, 6 helyett 1-et olvastam, de amúgy se lett volna jó. Akkor legyen pl. így:
Képek = 3
Szavazás összesen = 44
Tetszik = 30
Nem tetszik = 14
( ( 100 - ( 100 / ( 44 / 3 ) ) ) + ( 100 - ( 100 / ( 30 / 14 ) ) ) ) / 2 = 73.257
Képek = 6
Szavazás összesen = 41
Tetszik = 40
Nem tetszik = 1
( ( 100 - ( 100 / ( 42 / 6 ) ) ) + ( 100 - ( 100 / ( 40 / 1 ) ) ) ) / 2 = 91.607
Képek = 6
Szavazás összesen = 41
Tetszik = 41
Nem tetszik = 0
( ( 100 - ( 100 / ( 41 / 6 ) ) ) + 100 ) / 2 = 92.682
Képek = 30
Szavazás összesen = 43
Tetszik = 41
Nem tetszik = 2
( ( 100 - ( 100 / ( 43 / 30 ) ) ) + ( 100 - ( 100 / ( 41 / 2 ) ) ) ) / 2 = 62.677
1. Kiszámolod a szavazatok és képek arányát.
2. Kiszámolod a jó és rossz szavazatok arányát.
3. Kiszámolod a két eredménynek az átlagát.
Ha nincs egy negatív szavazat se, akkor írj 100-at a szavazatok arányához. Ha kevesebb a szavazat mint amennyi kép van, akkor mínuszba megy a pont (azt még finomítani kellene).
Max. pontszám mindig 100-tól kevesebb.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!