ruby - 我如何从数组中随机选择?

标签 ruby arrays random

我想知道是否有更简洁的方法来执行此操作。基本上,我想从可变长度的数组中选择一个随机元素。通常,我会这样做:

myArray = ["stuff", "widget", "ruby", "goodies", "java", "emerald", "etc" ]
item = myArray[rand(myarray.length)]

有没有更易读/更简单的东西来替换第二行?或者这是最好的方法。我想你可以做 myArray.shuffle.first,但我几分钟前才在 SO 上看到 #shuffle,我还没有真正使用它。

最佳答案

只需使用 Array#sample :

[:foo, :bar].sample # => :foo, or :bar :-)

它在 Ruby 1.9.1+ 中可用。为了也能够将它与早期版本的 Ruby 一起使用,您可以 require "backports/1.9.1/array/sample" .

请注意,在 Ruby 1.8.7 中,它以不幸的名称 choice 存在;它在以后的版本中被重命名,所以你不应该使用它。

虽然在这种情况下没有用,但 sample 接受一个数字参数,以防您需要多个不同的样本。

关于ruby - 我如何从数组中随机选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3482149/

相关文章:

ruby-on-rails - 如何设置 "dynamically"变量值?

ruby - 规范。如何为管道输出或重定向输出着色?

c# - 通过数组传递给构造函数

c++ - vector <double> 将 c++ 代码中的错误加倍

haskell - 为什么随机类没有最小完整定义

ruby - 更改由 Watir Webdriver 在 ruby​​ 中创建的浏览器的进程优先级

c - 从文件读取数据到数组 - C

c - 如何将数组中的5个数字写入二进制

java - 使用 Java SecureRandom 进行洗牌以实现加密目的?

ruby-on-rails - Elastic Beanstalk 数据库池问题