Czasami trzeba uzyskać losową wartość boolean true/false w Ruby. Na przykład, gdy robimy seed bazy danych w Rails i chcemy stworzyć obiekty jak najbardziej zbliżone do rzeczywistych.
Opcja pierwsza. Metoda sample:
[true, false].sample
Aby przetestować, jak zawsze - uruchamiamy IRB (Interactive Ruby Shell) w terminalu:
Opcja druga. Wymieszać (metoda shuffle) tablicę [true, false] i wziąć pierwszy lub drugi element używając indeksu.
Wymieszujemy elementy w tablicy:
[true, false].shuffle
Po tym bierzemy pierwszy [0] lub drugi [1] element wymieszanej tablicy:
[true, false].shuffle[0]
lub
[true, false].shuffle[1]
Opcja trzecia. Uzyskać losową cyfrę za pomocą metody rand i porównać z jedną z nich.
1. Uzyskujemy losowo 0 lub 1;2. Porównujemy uzyskaną cyfrę, na przykład z 1.
Losowa cyfra:
rand(2)
=> 0
rand(2)
=> 1
Porównanie:
rand(2) == 1
=> false
rand(2) == 1
=> true
Opcja czwarta. Zmodyfikowana trzecia opcja (z metodą zero?):
rand(2).zero?
Metoda zero? pyta, czy cyfra jest równa 0. Tutaj trzeba rozumieć, że rand(2) daje 0 lub 1.
Więc zero? jest ładniejszą opcją porównania X == 0
Opcja 5. Biblioteka Faker.
Prawie zawsze można zobaczyć w projekcie bibliotekę Faker, która pozwala uzyskać fałszywe dane (do tworzenia testowych obiektów).
W czystym ruby można zainstalować Faker:
gem install 'faker'
łączymy bibliotekę
require 'faker'
Uzyskujemy losową wartość boolean za pomocą Faker:
Myślę, że można znaleźć jeszcze wiele sposobów na uzyskanie losowej wartości boolean w Ruby. To właśnie czyni Ruby świetnym. Tę samą zadanie można wykonać na wiele sposobów. A prawie wszystkie będą 'poprawne'. Tutaj już chodzi o szybkość wykonania kodu i jego styl (jak łatwo jest go czytać i rozumieć).