如果我有一个每秒发生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
}