Существует множество причин, по которым вы можете захотеть сгенерировать случайное значение или выбрать случайный элемент из массива в Ruby. Может быть, у вас много студентов, и вы хотите, чтобы Руби помог вам решить, какие три студента будут выступать завтра, или, может быть, вы пишете программу D&D и хотите, чтобы Руби имитировал бросок кости D20. Что бы вы ни делали, у Руби, вероятно, есть метод, который может вам помочь. В этом посте мы кратко рассмотрим два таких метода.

.образец( )

.sample - это встроенный метод Ruby, который можно использовать для случайного выбора элемента из массива.

. образец можно использовать несколькими способами. Вот основы:

1. Выбор одного элемента из массива

Вызов. sample в массиве без каких-либо аргументов вернет один элемент из массива. Как вы можете видеть ниже, при вызове массива целых чисел 1–10. sample вернул 7.

.sample работает не только с массивами целых чисел. Его можно вызывать для массивов, содержащих любое количество объектов Ruby.

2. Выбор нескольких элементов из массива

Если вы хотите указать, сколько случайных элементов возвращается, вы можете вызвать. sample (n) для массива с n - количество возвращаемых элементов.

Дополнительную информацию о Array # Sample вы можете найти в документации ruby-doc.org.

rand ()

Как и метод. sample, rand может помочь вам генерировать случайные числа. Однако он действительно отличается от. sample по нескольким основным параметрам.

Прежде всего, rand не является методом, который можно вызвать для массива. Rand - это частный метод, принадлежащий модулю ядра, от которого наследуются почти все объекты Ruby. Для целей этой публикации это означает, что его можно вызывать откуда угодно, но не с явным получателем. Существует способ, которым вы можете использовать rand, чтобы получить случайный элемент из массив, но .sample кажется предпочтительным методом для этой цели.
(Если вам интересно узнать больше о том, что значит быть глобальной переменной и почему rand может ' не может быть явно вызван к объекту, This Post объясняет его гораздо лучше, чем я когда-либо мог.)

Еще одно различие между этими двумя методами заключается в том, что rand является строго генератором случайных чисел. Его нельзя использовать для генерации чего-либо, кроме целых чисел и чисел с плавающей запятой.

## Примечание : числа, генерируемые rand , на самом деле не случайны. Это ГПСЧ или «генератор псевдослучайных чисел». Числа, которые он генерирует, могут показаться случайными невооруженным глазом, но они генерируются с использованием алгоритма, что означает, что они могут быть технически дублированы. Это не значит, что он не работает так же хорошо для большинства целей. Это просто означает, что если вам нужны действительно случайные числа, вы можете поискать в другом месте. ##

Вот несколько распространенных способов использования метода rand:

1. Без аргументов

Если rand вызывается без аргументов, он возвращает число с плавающей запятой ≥ 0,0 и ‹1,0.

2. С максимальным значением

Rand может принимать один аргумент, используя синтаксис rand (n). В этом случае rand вернет целое число ≥ 0 и ‹n.
n может быть либо числом с плавающей точкой, либо целым числом. Это может быть даже отрицательное число. (В этом случае отрицательное число сначала будет преобразовано в положительное с помощью. Abs). Независимо от того, что вы передаете, rand всегда будет возвращать положительное целое число, как показано ниже:

3. С диапазоном

При использовании rand у вас есть возможность передать диапазон в качестве аргумента. В предыдущем примере rand всегда возвращал целое число. Однако при указании диапазона, если минимальное или максимальное значение является числом с плавающей запятой, оно вернет число с плавающей запятой. Вот два варианта передачи аргумента диапазона в rand:

Вы можете использовать включающий диапазон, как показано ниже, которое возвращает целое число между двумя заданными значениями, включая максимальное значение. В включающем диапазоне есть две точки между минимальным и максимальным целыми числами.

Чтобы использовать не включающий диапазон, т. Е. Тот, который возвращает целое число ≥ минимального значения и до, но не включая максимальное значение, используйте тот же синтаксис, но с тремя точками.

Для получения дополнительной информации об использовании rand и PRNG, This - отличный ресурс.

Этот пост представляет собой краткое изложение лишь некоторых вещей, которые можно сделать в Ruby с помощью таких методов, как sample и rand. Эти методы и другие статьи могут использоваться гораздо чаще. Я включу сюда некоторые из источников, использованных в этой статье, для всех, кто хочет узнать больше:

Rand:
ThoughtCo.com
,
RubyGuides.com,
cs.cmu.edu,

Пример:
Ruby-Doc.org,
Ruby-Forum.com,

Глобальные функции:
GitHub.io
WordPress.com

Спасибо за внимание!