Hint #онлайн обновляется на сервере раз в минуту, данные в браузер загружаются с сервера тоже раз в минуту
Я об этом написал, зачем повторять-то?
k вычисляется для каждого сервера на основе динамики за последнюю минуту
Это очевидно, только я думал не за последнюю минуту, а за минут 5-10 хотя бы, там меньше флуктуаций, и соответственно усредненное значение будет более близким к реальному. Но это не суть.
код функции проанализирован неверно. ... Кому интересно, сам может посмотреть.
Да пожалуйста, смотрите. Только к чему кидаться такими словами, если даже не аргументируете это. Причем не только сам код был проанализирован, но и его пошаговое выполнение с обзором всех переменных, включая k, getServerTime(), и всех тегов data-x.
function predictOnline(value, k, time){
if (value меньше 20) return value;
var valueEx = value + Math.floor(Math.random() * 3) — 1;
if (value меньше 50) return valueEx;
var maxK = (Math.min(value * 0.5, 300) / 120) * (k больше 0 ? 1 : -1);
if (Math.abs(k) больше Math.abs(maxK)) k = maxK;
return Math.round(valueEx + (k * Math.min(120, Math.max(0, getServerTime() — time))));
}
Онлайн меньше 20 — никакого обновления не будет (посекундного, речь именно о нем).
Онлайн меньше 50 — тупо раз в секунду рандомом либо +1, либо -1, или же +0.
Онлайн меньше 600 — тогда k всегда будет не больше Math.min(value * 0.5, 300) / 120. И чем меньше онлайн, тем меньше k. Ясень пень, дабы ограничить неправдоподобное изменение скажем в 15 человек для сервера с низким онлайном, например 100.
Онлайн больше 600 (наш случай) — k будет не больше 2.5, опять же чтобы изменение не было слишком огромным, ибо для сервера в 2000 чел., k было бы равно 2000 / 120 = 16. За одну лишь минуту могло набежать до 2000+16*60 = 2960 !! (и даже бы 60 раз постоянный рандом -1 не помог). По косточкам все расписал.
только для того, чтобы было видно, что значения обновляются без перезагрузки.
Впрочем, тут весь ответ. Но с тем же успехом, скажем random(-x, x) справился, ведь через минуту все равно покажет совсем другой онлайн. На примере кадмуса — ваш рандомный счетчик из онлайна 1785 сделал 1792, страница обновилась — и опа, онлайн 1768, и счетчик снова пошел плясать, но уже вокруг этого числа.