a = a - [nil]
a.delete(nil)
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)
KB.Driver 发表于 2019-1-10 16:56
你这编辑还把标题和问题描述都改了= =
这样显得我答非所问啊
jianyulei 发表于 2019-1-10 19:44
我尝试了下,你和我的方法似乎都不太行,不能真正做到“抽取”的效果,抽取之后原本的数组中被抽取的元素 ...
class Array def 抽取(number) raise "抽取数量大于数组长度!" if number > self.size result = [] number.times{ result << self.delete_at(rand(self.size)) } return result end end
欢迎光临 Project1 (https://rpg.blue/) | Powered by Discuz! X3.1 |