如何从数组中随机选取?

如何从数组中随机选取?

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

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

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


SMILET
浏览 1163回答 3
3回答

一只甜甜圈

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

侃侃尔雅

myArray.sample(x) 还可以帮助您从数组中获取x个随机元素。

慕神8447489

数组中随机项的随机数def random_items(array)  array.sample(1 + rand(array.count))end可能的结果示例:my_array = ["one", "two", "three"]my_array.sample(1 + rand(my_array.count))=> ["two", "three"]=> ["one", "three", "two"]=> ["two"]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Ruby