如果我的事件每秒发生15次(编号为1 - 15),但我只想处理3次,我可以选择[1], [6] and [11],
。重要的是我处理的事件尽可能均匀分布并考虑环绕,即事件是连续的13,14,15,1,2,3等。
如果我想要4项,我能做的最好的是[1], [5], [9] & [13]
。
是否有一般算法可以计算我需要处理哪些事件给定事件总数(total
)和要处理的数量(processAmount
)。
答案 0 :(得分:1)
您可以尝试使用这种基本方法 - 将您的间隔划分为相等的非整数部分,并为每个事件采用最接近的整数事件索引:
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
}