Używam tego od jakiegoś czasu, aby powrócić true
lub false
podczas tworzenia fałszywych danych nasion. Zastanawiam się tylko, czy ktokolwiek ma lepszy, bardziej zwięzły lub szczegółowy sposób zwracania albo true
albo false
.
rand(2) == 1 ? true : false
rand(2)==1
jest to już wartość logiczna?Odpowiedzi:
Deklaratywny fragment kodu przy użyciu przykładowej tablicy # :
źródło
[true, false].sample
jest szybszy niżrand(2) == 1
. Kiedy wykonywane Każda operacja 10 milionów razyrand
metoda była 2.179s.sample
Metoda była 1.645s.Co powiesz na usunięcie operatora trójskładnikowego.
źródło
[true, false].sample
ponieważ od razu widać, co robi.rand(2) == 1
działałby z ruby <1,9, co jest dobre.0
i1
, możesz również użyćrand(2).zero?
Lubię używać
rand
:rand < 0.5
Edycja : ta odpowiedź była czytana,
rand > 0.5
alerand < 0.5
jest bardziej poprawna technicznie.rand
zwraca wynik w przedziale półotwartym [0,1), więc użycie<
prowadzi do równych szans przedziałów półotwartych [0,0,5) i [0,5,1). Użycie>
prowadziłoby do NIERÓWNYCH kursów z zakresu zamkniętego [0,0,5] i zakresu otwartego (.5,1).źródło
rand > 0.3
rand < 0.7
dla 70%Zwykle używam czegoś takiego:
Możesz również rozszerzyć Integer, aby utworzyć metodę to_boolean:
źródło
rand(2).zero?