這不是一個特別的ruby問題:更多關於算法的常見問題。但可能有一些特定於ruby的數組方法很有幫助。在固定大小的數組上傳播選擇的算法
我有30個項目的陣列。我詢問了15到30之間的一些項目,我想從整個陣列中選擇儘可能均勻分佈的給定數量的項目。選擇必須是非隨機的,每次都返回相同的結果。
比方說,有人問16個項目。如果我返回前16名,這將是一個巨大的失敗。相反,我可以返回所有奇數和最後一個。如果我有數字1到存儲陣列中的30,我可以還給
myArr.spread(16)
=> [1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,30]
如果有人問20個項目,它需要一點小技巧:我不能馬上想到這樣做的一個很好的編程方法。我覺得它一定已經被某人解決了。有什麼建議麼?
這聽起來像賈斯汀高的答案,確實有點下滑(見評論)。 – 2012-08-13 12:27:40
@MaxWilliams,爲了達到你想要的效果,你只需要調整一下使用的數字:而不是'array_size/number_to_select',你可以使用'(array_size-1)/(number_to_select-1)'作爲「stride 」。計數從0到'number_to_select-1',並在每一步乘以「步幅」。 – 2012-08-13 12:47:47