ГоловнаВсі публікаціїКатегоріїПро проєкт

Як отримати випадкове логічне значення 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
Варіант другий. Перемішати (метод shuffle) масив [true, false] та взяти перший чи другий елемент використовуючи індекс.
Перемішуємо елементи у масиві:
[true, false].shuffle
Screenshot 2023-05-03 at 21.22.23.png
Після цього беремо перший [0] чи другий [1] елемент перемішаного масиву:
[true, false].shuffle[0]
або
[true, false].shuffle[1]
Screenshot 2023-05-03 at 21.23.32.png
Варіант третій. Отримати випадкову цифру за допомогою методу 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
Думаю варіантів для отримання рандомного булева значення у Ruby можна знайте ще багато. Саме цим Ruby й крутий. Одну й ту саму задачу можна робити багатьма способами. Та майже всі вони будуть 'правильними'. Тут вже питання за швидкістю виконання коду та його стилю (наскільки його легко читати та розуміти).

Цей допис поки що не має жодних доповнень від автора/ки

03.05.2023 17:46

Що роботи якщо у macOS не працює веб-камера?

meme code
meme code@memecode
06.05.2023 09:19

Як відключити File Upload в Trix редакторі?

meme code
meme code@memecode
10.05.2023 17:40

Як використовувати кольори шістнадцяткового коду CSS з альфа значенням?

meme code
meme code@memecode
16.05.2023 20:02

Що таке Origin у Git?

meme code
meme code@memecode
16.05.2023 22:17

Як видалити проміжок між inline та inline-block елементами?

meme code
meme code@memecode
17.05.2023 18:52

Що таке loop у Javascript? Як працють цикли for та while у Javascript?

meme code
meme code@memecode
22.05.2023 16:26

В чому різниця <%, <%=, <%# та -%> у ERB шаблонах (Ruby on Rails)?

meme code
meme code@memecode