从ruby中的集合生成随机值

时间:2011-09-15 14:07:01

标签: ruby-on-rails ruby

为简单起见,我有一个产品清单。

现在我想创建一个方法,每次都会生成一个随机产品。

我如何实现这一目标。

4 个答案:

答案 0 :(得分:7)

假设您有产品的阵列产品,那么您可以通过以下代码选择随机产品:

randon_product = products.sample

答案 1 :(得分:2)

在1.9中,您有[].sample,在1.8中,您有[].choice。有一个名为backports的宝石可以协调这个和其他差异,或者你可以自己这样做:

class Array
  def sample
    choice
  end
end unless Array.method_defined? :sample

答案 2 :(得分:1)

在Ruby 1.8中,最简单的方法可能是Array#choice

irb(main):005:0> 5.times {puts (1..100).to_a.choice} 
14
92
84
65
9
=> 5
irb(main):006:0> [5,3,234,234,3,2,2,2].choice
=> 3

编辑在Ruby 1.9中,它被称为sample,而不是choice

答案 3 :(得分:0)

array = [product1, product2, product3]

puts array[rand(array.size)]