Answers:
使用Array#sample的声明性代码段:
random_boolean = [true, false].sample
[true, false].sample
比快rand(2) == 1
。当我执行一千万次操作时,rand
方法为2.179s。该sample
方法为1.645s。
如何删除三元运算符。
rand(2) == 1
[true, false].sample
它,因为它可以立即显而易见。rand(2) == 1
可以在<1.9的ruby下工作,这很好。
0
and 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
已经是布尔值?