Як отримати випадкове логічне значення true чи false у Ruby?

Іноді потрібно отримати випадкове булеве значення true/false у Ruby. Наприклад коли ми робимо seed бази даних у Rails та хочемо створити об'єкти максимально наближенні до реальних.
Варіант перший. Метод sample:
[true, false].sample
Щоб протестувати, як завжди - запускаємо IRB (Interactive Ruby Shell) в терміналі:
Screenshot 2023-05-03 at 21.01.03.png
      75,4 кБ
Screenshot 2023-05-03 at 21.01.03.png 75,4 кБ
Варіант другий. Перемішати (метод shuffle) масив [true, false] та взяти перший чи другий елемент використовуючи індекс.
Перемішуємо елементи у масиві:
[true, false].shuffle
Screenshot 2023-05-03 at 21.22.23.png
      78,3 кБ
Screenshot 2023-05-03 at 21.22.23.png 78,3 кБ
Після цього беремо перший [0] чи другий [1] елемент перемішаного масиву:
[true, false].shuffle[0]
або
[true, false].shuffle[1]
Screenshot 2023-05-03 at 21.23.32.png
      96,4 кБ
Screenshot 2023-05-03 at 21.23.32.png 96,4 кБ
Варіант третій. Отримати випадкову цифру за допомогою методу 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:
Faker::Boolean.boolean
require 'faker'

=> true


Faker::Boolean.boolean

=> false

Faker::Boolean.boolean

=> true
Screenshot 2023-05-03 at 21.44.17.png
      67,7 кБ
Screenshot 2023-05-03 at 21.44.17.png 67,7 кБ
Думаю варіантів для отримання рандомного булева значення у Ruby можна знайте ще багато. Саме цим Ruby й крутий. Одну й ту саму задачу можна робити багатьма способами. Та майже всі вони будуть 'правильними'. Тут вже питання за швидкістю виконання коду та його стилю (наскільки його легко читати та розуміти).

🙌 Підтримати блог @memecode

Ви можете поширити цей допис у соцмережах, чим допоможете платформі цейво розвиватись (* ^ ω ^)

📝 Більше публікацій:
Дисклеймер

Інформація на сайті tseivo.com є суб'єктивною та відображає особисті погляди та досвід авторів та авторок блогів.

Використовуйте цей ресурс як одне з декількох джерел інформації під час своїх досліджень та прийняття рішень. Завжди застосовуйте критичне мислення. Людина сама несе відповідальність за свої рішення та дії.