如果我有一个每秒发生15次的事件(编号1-15),但我只想处理它3次,我可以选择[1], [6] and [11],。重要的是,我处理的事件尽可能均匀分布,并考虑到环绕,即事件是连续的13、14、15、1、2、3等。
如果我想要4个项目,我能做的就是[1], [5], [9] & [13]
有没有一个通用的算法,可以在给定事件总数(total)和要处理的事件数(processAmount)的情况下计算我需要处理哪些事件。

最佳答案

您可以尝试使用此基本方法-将间隔除以相等的非整数部分,并为每个事件获取最接近的整数事件索引:

int gaps = total+1;
double step = 1.0*gaps/processAmount;

for (int i = 0; i < processAmount;++i)
   int index = (int)(1 + i*step);
   //output or handle index
}

10-07 18:56
查看更多