Извлечение x случайных элементов из массива

Я изо всех сил пытаюсь написать чистый метод, который при передаче массива строк и х возвращает рандомизированный список элементов массива, суммирующий х, например.

def getrandomarrayelements(thearray, howmany)
    return [something]
end

Да, я должен представить свой существующий код, который пока работает не очень хорошо, он длится 8 строк, и я чувствую, что это можно сделать в одном?!

Ответ 1

В рубине 1.9:

irb(main):001:0> [1,2,3,4,5].sample(3)
=> [2, 4, 5]
irb(main):002:0> [1,2,3,4,5].sample(3)
=> [2, 5, 3]

и для ruby ​​1.8 что-то вроде этого:

def sample(arr, n)
  arr.shuffle[0...n]
end

irb(main):009:0> sample([1,2,3,4,5], 3)
=> [5, 1, 3]
irb(main):010:0> sample([1,2,3,4,5], 3)
=> [3, 4, 2]