Я использую это в течение некоторого времени , чтобы вернуть либо true
или false
при создании данных поддельных семян. Просто интересно, есть ли у кого-нибудь лучший, более лаконичный или подробный способ вернуться true
или false
.
rand(2) == 1 ? true : false
rand(2)==1
это уже логическое значение?Ответы:
Декларативный фрагмент с использованием Array # sample :
источник
[true, false].sample
быстрее чемrand(2) == 1
. Когда я выполнил каждую операцию 10 миллионов разrand
метод был 2.179s.sample
Метод был 1.645s.Как насчет удаления тернарного оператора.
источник
[true, false].sample
больше, потому что сразу видно, что он делает.rand(2) == 1
будет работать с ruby <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%Обычно я использую что-то вроде этого:
Вы также можете расширить Integer, чтобы создать метод to_boolean:
источник
rand(2).zero?