【发布时间】:2018-06-11 15:00:20
【问题描述】:
我需要计算每秒得到的数字流的第 90 个百分位数。每秒可能高达数百万个数字,但第 90 个百分位必须是近似的,不一定是精确的。优先级队列/最大堆是执行此操作的最佳方式还是其他方式?如果是这样,我最终将如何近似该值?
【问题讨论】:
-
您是否在每秒批量处理这些数字?还有百分位数,它是否必须适用于整个流,还是您只需要最新的估计值?
-
你的输入分布是什么样的?
-
流的元素是独立的吗?
-
我正在计算每秒的第 90 个百分位,而这些秒中的每一秒可能有多达数百万个我必须计算百分位的数字(但大约,不必精确) .分布在 0 到 150 之间,并且是独立的。
-
那么值在0到150之间?创建 150 个桶,当有物品进来时增加相应的桶。当您收到所有物品后,从最大的桶开始计数,直到达到总数的 10%。这将是你的 90%。
标签: java statistics heap priority-queue percentile