首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

请问一个求异常百分比算法,多谢帮助

2012-08-02 
请教一个求错误百分比算法,谢谢帮助!统计任意连续10分钟错误消息百分比(即错误消息个数占总消息百分比),以

请教一个求错误百分比算法,谢谢帮助!
统计任意连续10分钟错误消息百分比(即错误消息个数占总消息百分比),以1分钟为单位,每分钟统计一次。

方法一:
把这10分钟错误消息求和为X,总消息求和为Y,然后X/Y得到错误消息百分比。
遇到问题:但是遇到一个问题,因为X和Y值可能很大,4字节存储这个大整数会越界(最大只能用4字节)。

方法二:
每分钟分别求错误信息百分比,然后在求平均百分比。
遇到问题:统计不准。比如举例一个极端例子,前9分钟每分钟只有1个消息且是错误消息,故前9分钟每分钟的错误百分比都是100%,第10分钟有10000个信息,错误消息个数为0,第10分钟错误消息百分比为0%,所以这10分钟的平均错误率为90%。

如果按照方法一计算,则错误百分比为9/10009,约为0%了。

方法一算出的结果是最精确的,是最理想的结果,但是受存储限制,不能采用。
方法二在这样极端情况下算出的值偏差太大,也不能采取。

求一种算法,算出的值比较接近方法一算出的结果。

数学丢的差不多了,特贵地求助,非常感谢。

[解决办法]
内存这么紧张?连4个字节都没有?就算有1个字节大概也没问题了啊?
如果真是这样,最简单的是用float保存错误消息 和总消息,最后结果会有误差,不过应该在10^(-7)左右
[解决办法]
方法一:
把这10分钟错误消息求和为X,总消息求和为Y,然后X/Y得到错误消息百分比。
遇到问题:但是遇到一个问题,因为X和Y值可能很大,4字节存储这个大整数会越界(最大只能用4字节)。

针对这个方案,你是否可以将X,Y拆开,按每分钟为一个单位。
X=X1+X2+X3+....+X10
Y=Y1+Y2+Y3+....+Y10
错误率=(X1+X2+X3+....+X10)/(Y1+Y2+Y3+....+Y10)

[解决办法]
我好奇的是为什么10分钟就能撑爆2^32个消息。
[解决办法]
我理解楼主是说XY作为单个变量可能超过4字节,而总的内存应该是不限的,就是说,在第10分钟时,各分钟的X1、Y2、X2、Y2。。。应该都是可以放在内存中并可以读出来的。
如果是这样,在第十分钟可以如下计算:
1/(Y1/x1+Y2/x1+...+Y10/x1)+1/(Y1/x2+Y2/x2+...+Y10/x2)+...+1/(Y1/x10+Y2/x10+...+Y10/x10)
每个XiYi是可以存的下的,计算Yj/Xi用4个字节也够了,基本上每一步都在4个字节范围内。
如果连XiYi都无法保存,那就得想想有没有好的递推式子了,暂时没想到

热点排行