これは特に 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 個のアイテムを要求した場合、それは少しトリッキーです。これを行うための適切なプログラムによる方法をすぐには思いつきません。すでに誰かによって解決されているに違いないような気がします。助言がありますか?