Іноді потрібно отримати випадкове булеве значення true/false у Ruby. Наприклад коли ми робимо seed бази даних у Rails та хочемо створити об'єкти максимально наближенні до реальних.
Варіант перший. Метод sample:
[true, false].sample
Щоб протестувати, як завжди - запускаємо IRB (Interactive Ruby Shell) в терміналі:
Варіант другий. Перемішати (метод shuffle) масив [true, false] та взяти перший чи другий елемент використовуючи індекс.
Перемішуємо елементи у масиві:
[true, false].shuffle
Після цього беремо перший [0] чи другий [1] елемент перемішаного масиву:
[true, false].shuffle[0]
або
[true, false].shuffle[1]
Варіант третій. Отримати випадкову цифру за допомогою методу rand та порівняти з одною з них.
1. Отримуємо випадково 0 чи 1;2. Порівнюємо отриману цифру, наприклад з 1.
Рандомна цифра:
rand(2)
=> 0
rand(2)
=> 1
Порівняння:
rand(2) == 1
=> false
rand(2) == 1
=> true
Варіант четвертий. Модіфікований третій варіант (з методом zero?):
rand(2).zero?
Метод zero? запитує, чи цифра дорівнює 0. Тут треба розуміти, що rand(2) дає 0 або 1.
Тож zero? більш красивіший варіант порівняння X == 0
Варіант 5. Бібліотека Faker.
Майже завжди можна побачити в проєкті бібліотеку Faker, яка дає отримати фейкові дані (для створеня тестових об'єктів).
В чистому ruby можна встановити Faker:
gem install 'faker'
підключаємо бібліотеку
require 'faker'
Отримуємо випадкове булеве значення за допомогою Faker:
Думаю варіантів для отримання рандомного булева значення у Ruby можна знайте ще багато. Саме цим Ruby й крутий. Одну й ту саму задачу можна робити багатьма способами. Та майже всі вони будуть 'правильними'. Тут вже питання за швидкістю виконання коду та його стилю (наскільки його легко читати та розуміти).