2011-09-29 94 views
10

我正在努力编写一个干净的方法,它在传递一个字符串数组并返回一个随机数组元素总数为x的列表时,例如。从数组中检索x个随机元素

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

是的,我应该提交我现有的代码,而这些作品是不好的,这是8号线长,我有一种感觉,它可以在一个做了什么?

+1

这是一个洗牌和交易。有很多现有技术,不是吗? –

回答

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] 

和红宝石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] 
+0

在1.9版本中,是否会返回独特的元素,在我的问题中忘记提及? – creativetechnologist

+0

是的,如果你的数组有uniq元素,它将是uniq。 –

相关问题