/
SN1054NGC
/
DayZ_Projects_cpp
Обзор
Документация
Войти
/
SN1054NGC
/
DayZ_Projects_cpp
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
scripts/3_game/tools/simplemovingaverage.c
52 строки
1 KB
SN1054NGC
Initial DayZ mod project commit
26 ноя 2025, 01:03
26 ноя 2025, 01:03
fddb039
Код
Авторство
О чём код?
class SimpleMovingAverage<Class T> { private T m_Sum = 0; private int m_Pointer = 0; private int m_Size = 0; private ref array<T> m_Samples = new array<T>(); /** \brief Initialize Simple Moving Average Cyclic Buffer \param pSize \p size of the buffer \param pDefaultValue \p initial value stored in buffer */ void SimpleMovingAverage(int pSize, T pDefaultValue = 0) { m_Size = pSize; for (int i = 0; i < m_Size; i++) { m_Samples.Insert(pDefaultValue); m_Sum += m_Samples[i]; } } /** \brief Add new value and return average value from buffer \param newSample \p value that will be added to buffer \return average value from the buffer @code ref SimpleMovingAverage<float> m_Buffer = SimpleMovingAverage<float>(10, 0.5); float sma = m_Buffer.Add(0.2); @endcode */ T Add(T newSample) { m_Sum = m_Sum - m_Samples[m_Pointer] + newSample; m_Samples[m_Pointer++] = newSample; if (m_Pointer == m_Size) { m_Pointer = 0; } return m_Sum / m_Size; } /** \brief Returns all the samples stored in the buffer */ array<T> GetSamples() { return m_Samples; } }