Я використовую це деякий час для повернення true
або false
при створенні підроблених даних про насіння. Цікаво, чи хтось має кращий, більш стислий чи багатослівний спосіб повернення true
або false
.
rand(2) == 1 ? true : false
Я використовую це деякий час для повернення true
або false
при створенні підроблених даних про насіння. Цікаво, чи хтось має кращий, більш стислий чи багатослівний спосіб повернення true
або false
.
rand(2) == 1 ? true : false
Відповіді:
Декларативний фрагмент з використанням зразка Array # :
random_boolean = [true, false].sample
[true, false].sample
швидше, ніж rand(2) == 1
. Коли я виконав кожну операцію 10 мільйонів разівrand
метод був 2.179s. sample
Метод був 1.645s.
Як щодо видалення термінального оператора.
rand(2) == 1
[true, false].sample
краще, тому що миттєво очевидно, що він робить. rand(2) == 1
працював би з рубіном <1,9, хоча це добре.
0
і 1
, ви також можете використовуватиrand(2).zero?
Мені подобається використовувати rand
:
rand < 0.5
Редагувати : Ця відповідь використовується для читання, rand > 0.5
але rand < 0.5
є більш технічно правильною.rand
повертає результат у напіввідкритому діапазоні [0,1), тому використання <
веде до рівних шансів напіввідкритих діапазонів [0,0.5) та [0,5,1). Використання >
призвело б до НЕВІДКОВИХ шансів закритого діапазону [0,0.5] та відкритого діапазону (.5,1).
rand > 0.3
rand < 0.7
для 70%
Я зазвичай використовую щось подібне:
rand(2) > 0
Ви також можете розширити Integer, щоб створити метод to_boolean:
class Integer
def to_boolean
!self.zero?
end
end
rand(2).zero?
rand(2)==1
це вже булеве значення?