获取Ruby中数组的随机非重复元素

氯德维格Rad

我有一系列问题,但我想从中抽出一个无问题的随机答案。因此,例如5个问题,如果所有问题都被提出,我将再次开始。我想将其放入方法(或类似方法)中

def askrandom
questions = ["A?", "B?" , "C?" , "D?"]

return #random question
end

输出应该是这样的

A? C? D? B? #all questions where asked once, so repeat

B? D? C? A? ...

fl00r

它与@Stefan的解决方案非常接近,但思路略有不同。

class Questions
  def initialize(array_of_questions)
    @questions = array_of_questions
    @nums ||= get_nums
  end

  def get_nums
    ([email protected]).to_a.shuffle
  end

  def get_num
    @nums.pop or (@nums = get_nums).pop
  end

  def pick
    @questions[get_num]
  end
end

questions = Questions.new(["A", "B", "C", "D"])

10.times.map{ questions.pick }
#=> ["B", "D", "C", "A", "C", "A", "B", "D", "A", "B"]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章