2010-06-14 62 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