Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 使用固定内存量计算百分位数_Algorithm_Resampling_Percentile_Streaming Algorithm - Fatal编程技术网

Algorithm 使用固定内存量计算百分位数

Algorithm 使用固定内存量计算百分位数,algorithm,resampling,percentile,streaming-algorithm,Algorithm,Resampling,Percentile,Streaming Algorithm,我有一个以一定速率到达的int值流。每5分钟,我想从这些值计算一些百分位数,然后重新开始 问题是:我不想浪费太多内存,所以我只想为值保留几个KBs。如果我的缓冲区在5分钟内没有填满,我可以完美地计算百分位数。但是,如果缓冲区确实填满了,我想开始删除一些值(可能使用和随机逐出,如这里所建议的)。不幸的是,我找不到一个在这两种情况下都能很好工作的解决方案-如果缓冲区未满,我不想逐出或忽略值,一旦它满了,我开始逐出,我总是会引入偏差。好的,我想我已经找到了它-我可以使用它来统一选择传入元素的固定大小的

我有一个以一定速率到达的int值流。每5分钟,我想从这些值计算一些百分位数,然后重新开始


问题是:我不想浪费太多内存,所以我只想为值保留几个KBs。如果我的缓冲区在5分钟内没有填满,我可以完美地计算百分位数。但是,如果缓冲区确实填满了,我想开始删除一些值(可能使用和随机逐出,如这里所建议的)。不幸的是,我找不到一个在这两种情况下都能很好工作的解决方案-如果缓冲区未满,我不想逐出或忽略值,一旦它满了,我开始逐出,我总是会引入偏差。

好的,我想我已经找到了它-我可以使用它来统一选择传入元素的固定大小的子集。然后我可以从这个子集计算百分位数。

缓冲区的大小是多少?大小是可配置的。现在我有10000个整数=40KB。我可以把它做得更大,但因为我没有办法知道会有多少值到达-这可能会随着时间的推移而发生很大的变化-我选择的每种尺寸可能都不够。简单地向它扔10MB太浪费了。