【问题标题】:Generate Random value from a collection in ruby [duplicate]从ruby中的集合生成随机值[重复]
【发布时间】:2011-11-17 22:22:42
【问题描述】:

为了简单起见,我有一个产品列表。

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

我如何做到这一点。

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    假设你有一个Products数组,那么你可以通过以下代码随机选择一个Product:

    randon_product = products.sample
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • +1 用于炫耀自己动手的技术。非常有用。
      【解决方案3】:

      在 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

      【讨论】:

      【解决方案4】:
      array = [product1, product2, product3]
      
      puts array[rand(array.size)]
      

      【讨论】:

        猜你喜欢
        • 2017-12-26
        • 2012-03-16
        • 1970-01-01
        • 1970-01-01
        • 2018-09-14
        • 2015-09-10
        • 1970-01-01
        • 2023-03-30
        • 1970-01-01
        相关资源
        最近更新 更多