[pre lang="ruby"]
class Array
def 抽取(number) #number是抽取的数量
raise "数组长度小于要抽取的数量!" if self.size < number
result = []
while result.size < number
index = rand(self.size)
result << index unless result.include?(index) #防止抽到重复的
end
result.collect{|index| self[index]}
end
end
#使用方法: array.抽取(3)
[/pre]
原来你要的是抽完就没掉……
结合菜刀王的话可以写成函数:
[pre lang="ruby"]
class Array
def 抽取(number)
raise "抽取数量大于数组长度!" if number > self.size
result = []
number.times{ result << self.delete_at(rand(self.size)) }
return result
end
end
[/pre]