从数组中检索x个随机元素

cre*_*ist 10 ruby arrays ruby-on-rails

我正在努力编写一个干净的方法,当传递一个字符串数组时,x返回一个总共x的数组元素的随机列表,例如.

def getrandomarrayelements(thearray, howmany)
    return [something]
end
Run Code Online (Sandbox Code Playgroud)

是的,我应该提交我现有的代码,虽然工作效果不好,但它有8行长,我觉得可以在一个代码中完成?!

Vas*_*ich 27

在红宝石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]
Run Code Online (Sandbox Code Playgroud)

对于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]
Run Code Online (Sandbox Code Playgroud)