Я хочу знать, есть ли более чистый способ сделать это. По сути, я хочу выбрать случайный элемент из массива переменной длины. Обычно я бы сделал это так:
myArray = ["stuff", "widget", "ruby", "goodies", "java", "emerald", "etc" ]
item = myArray[rand(myarray.length)]
Есть ли что-то, что более читабельно / проще заменить второй строкой? Или это лучший способ сделать это. Я полагаю, вы могли бы сделать myArray.shuffle.first
, но я видел только #shuffle
несколько минут назад на SO, я на самом деле еще не использовал его.
Ответы:
Просто используйте
Array#sample
:Он доступен в Ruby 1.9.1+. Вы также можете использовать его с более ранней версией Ruby
require "backports/1.9.1/array/sample"
.Обратите внимание, что в Ruby 1.8.7 он существует под неудачным именем
choice
; он был переименован в более поздней версии, поэтому вы не должны его использовать.Хотя в этом случае это бесполезно, он
sample
принимает числовой аргумент, если вам нужно несколько отдельных выборок.источник
myArray.sample(x)
также может помочь вам получить х случайных элементов из массива.источник
вернет 1 случайное значение.
также вернет 1 случайное значение.
источник
Случайное количество случайных элементов из массива
Примеры возможных результатов:
источник
1 +
в другом месте.Это вернет случайный элемент из массива.
Если Вы будете использовать линию, указанную ниже
тогда в некоторых случаях он вернет 0 или ноль.
Линия, упомянутая ниже
всегда возвращайте значение от 0 до числа-1.
Если мы используем
тогда он может вернуть число, и arr [число] не содержит элемента.
источник
источник