每秒产生一条数据,怎么样在产生数据的同时高效的保存其最近x条数据的平均数

.Net技术 码拜 9年前 (2016-03-02) 786次浏览
产生数据的同时怎么把最新的x条数据保存到list里面。例如把最新的10条数据保存到list10里面

 List<double> list10= new List<double>();
            while (true)
            {
                int n = new Random().Next(100, 200);
                Thread.Sleep(1000);
            }
解决方案

100

没有你这样死算的,计算均值使用的是递推公式计算的
第 n 天
MAn = (C1 + C2 + C3 + … + Cn) / N
第 n+1 天
MAn+1 = (C2 + C3 + C4 + … + Cn+1) / N
= (MAn * N -C1 + Cn+1) / N
实际计算时并不做除法

     n
M =  ∑Ci
    i=1

即 Mn+1 = Mn – C1-n + Cn+1
缓存次序列,使用时再做除法
由于历史数据不会再改变,你完全可以对数据做持久化保存
股软中都有用到 db2 或 sqlite 数据库的


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明每秒产生一条数据,怎么样在产生数据的同时高效的保存其最近x条数据的平均数
喜欢 (0)
[1034331897@qq.com]
分享 (0)