如何随机从数组选?如何随机从数组选?(How do I pick randomly from an

2019-05-11 16:04发布

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

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

有什么是更可读/可简单更换第二行? 或者是,最好的方式做到这一点。 我想你可以做myArray.shuffle.first ,但我只看到#shuffle几分钟前就这样,我还没有实际使用它。

Answer 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接受的情况下,你想了许多不同的样本一些参数。



Answer 2:

myArray.sample(x)也可以帮助你获得X从数组随机元素。



Answer 3:

从数组随机物品的随机数

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"]


Answer 4:

myArray.sample

将返回1个随机值。

myArray.shuffle.first

也将返回1个随机值。



Answer 5:

arr = [1,9,5,2,4,9,5,8,7,9,0,8,2,7,5,8,0,2,9]
arr[rand(arr.count)]

这将从数组中返回一个随机元素。

如果您将使用下述线

arr[1+rand(arr.count)]

那么在某些情况下,它会返回0或零值。

该行下面提到

rand(number)

总是从0返回值与数1。

如果我们使用

1+rand(number)

然后它可以返回数和ARR [数字]不包含元件。



文章来源: How do I pick randomly from an array?