小编典典

如何从数组中随机选择?

all

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

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

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


阅读 101

收藏
2022-03-06

共1个答案

小编典典

只需使用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如果您需要多个不同的样本,则接受一个数字参数。

2022-03-06