답변:
Array # sample을 사용하는 선언적 스 니펫 :
random_boolean = [true, false].sample
[true, false].sample
빠른 것보다 rand(2) == 1
. 나는 각 작업을 수행 할 때 1000 만 번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
기술적으로 더 정확합니다. 반 개방 범위 [0,1) rand
의 결과를 반환 하므로를 사용 하면 반 개방 범위 [0,0.5) 및 [0.5,1)의 동일한 확률이 발생합니다. 를 사용 하면 닫힌 범위 [0,0.5]와 열린 범위 (.5,1)의 UNEQUAL 확률이 발생합니다.<
>
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
이미 부울 값 이라는 것을 알고 있습니까?