I am revising the new ranking algorithm and welcome discussion.
Binkcn opened this issue ยท 1 comments
My English is not good. The following content uses Google Translate. Forgive me.
In the actual use of the current version of the plug-in, it is almost impossible to collect most of the player data participating in the ranking this week, and the plug-in's calculation of the ranking next week is based on the currently collected user data, which will cause An embarrassing result: My local database must contain the vast majority of players who have participated in the ranking this week in order to get a more accurate ranking estimate for the next week, and the time to collect data is only 6 days (because 24 hours after the honor is reset Data is not collected).
Even if the plug-in has a synchronization method, collecting data is still difficult. Taking my own server as an example, it is known that the number of players who participated in ranking statistics last week was close to 10,000, but in fact, as of the date reset, there were only 4,000 player data in my local database.
Therefore, I decided to use the new ranking calculation method:
- I cache the current local data instead of deleting it when resetting every week (Copy currentStandings-> lastStandings), and every time I save new player data, I compare and record the maximum ranking number of a known player;
- When calculating rank distribution, the pool size uses the known largest player ranking, not the total amount recorded in the local database.
- When estimating the ranking of designated players, the original approach is to sort the local data in descending order of honor this week to obtain the position of the designated player in this list; I modified it to: this week or cached data of the previous week (ie In the above-mentioned copy data), the player whose honor value is closest to the honor of the specified player is found to obtain an estimated ranking.
The new ranking method can be used to calculate more accurate next ranking data when the plug-in has less data; of course, if you can collect almost all players participating in the settlement ranking this week, then both ranking calculation methods are Very accurate.
In addition, because I cached the data records of the previous week, I will not need to wait for 24 hours when starting to collect data after the data reset this week. If the player exists in the cache of last week, I will compare the two data with " Last week's honor, "last week ranking" two data to determine whether the player's rank data has been updated for inclusion.
Looks falsy for me. It is usually about 10-15% of pool size not getting recorded every week, because people just do not log in after weekends. Totally not 250%. I need proofs for that. And no, I won't be basing my calcultions on old/cached/imaginary/etc. data. Only on the actual data collected during this week, with values coming from the server.