2011-12-19 2 views

ответ

21

Как об использовании Array#sample

[1, 2, 3].sample(1) 

образец → OBJ
выборка (случайным образом: RNG) → OBJ
образца (п) → new_ary
образец (n, случайный : rng) → new_ary
Выберите случайный элемент или n случайных элементов из массива. Элементы выбираются с использованием случайных и уникальных индексов в массив, чтобы гарантировать, что элемент не повторится, если в массиве уже не содержится повторяющихся элементов. Если массив пуст, первая форма возвращает nil, а вторая форма возвращает пустой массив.
Если rng задано, он будет использоваться в качестве генератора случайных чисел.

(Предполагая, что вы больше заинтересованы в элементе, а не индексом)

+0

Я даже не знал об этом ... но да, гораздо больше интересовался элементом. Благодаря! – Slick23

+0

@JustinM Вместо этого вы должны принять * этот * ответ. –

1

Это будет первый один.

icons = %w[asterisk star arrow] 
random = rand(icons.length) 

Как указано в документации:

Если аргумент представляет собой целое число или Bignum, он возвращает случайное целое число, большее или равное нулю, и меньше аргумента.

Таким образом, если массив состоит из 10 элементов (0 .. 9), рант (10) должен возвращать значение в диапазоне от 0 до 9.

Источник: http://www.ruby-doc.org/core-1.9.3/Random.html

+0

Я собираюсь отметить этот, поскольку он напрямую отвечает на вопрос, хотя я не знал о образце, который кажется хорошим и аккуратным. Я поддержу остальных. – Slick23

+0

Повторная реализация встроенного метода не является правильным ответом на любой вопрос :) –

+0

okay, okay ... unselected :) – Slick23

Смежные вопросы