2010-06-14 69 views
1

如果我发生了每秒15次(编号为1 - 15)的事件,但我只想处理它3次,我可以选择[1], [6] and [11],。重要的是,我所处理的事件尽可能均匀分布,并考虑到环绕,即事件是连续的13,14,15,1,2,3等。从事件中选择尽可能均匀分布的项目

如果我想4项最好我能做的是[1], [5], [9] & [13]

是否有一个通用算法,将根据事件总数(total)和要处理的数量(processAmount)计算我需要处理的事件。

回答

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 
} 
+0

完美,谢谢! – 2010-06-14 11:58:15