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

Як отримати випадкове логічне значення 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