如何从数组中随机选取?我想知道是否有更清洁的方法来做到这一点。基本上,我想从可变长度的数组中选择一个随机元素。通常情况下,我会这样做:myArray = ["stuff", "widget", "ruby", "goodies", "java", "emerald", "etc" ]item = myArray[rand(myarray.length)]更换第二行是否有更易读/更简单的东西?或者这是最好的方法。我想你可以这样做myArray.shuffle.first,但我#shuffle几分钟前才看到SO,我还没有真正用过它。
3 回答
一只甜甜圈
TA贡献1836条经验 获得超5个赞
只需使用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
您需要多个不同的样本,则接受一个数字参数。
慕神8447489
TA贡献1780条经验 获得超1个赞
数组中随机项的随机数
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"]
- 3 回答
- 0 关注
- 1221 浏览
添加回答
举报
0/150
提交
取消