我在構建假種子數據時,一直在使用這一段時間返回true
或false
。只是想知道是否有人有更好,更簡潔或詳細的方式返回true
或false
。返回一個隨機布爾值的最佳方法
rand(2) == 1 ? true : false
我在構建假種子數據時,一直在使用這一段時間返回true
或false
。只是想知道是否有人有更好,更簡潔或詳細的方式返回true
或false
。返回一個隨機布爾值的最佳方法
rand(2) == 1 ? true : false
使用Array#sample聲明性片段:
random_boolean = [true, false].sample
該死的,我完全忘了我發佈了這個問題。非常感謝你的答案! –
**'[true,false] .sample'比'rand(2)== 1'快**。當我執行每個操作* 1000萬次時,「rand」方法是2.179s。 「樣本」方法是1.645s。 – Mirror318
[true,false] .sample不比rand快0.5 –
如何去除三元運算符。
rand(2) == 1
當然。簡單。我喜歡。 –
它更緊湊,但我更喜歡'[true,false] .sample',因爲它立即顯而易見。 'rand(2)== 1'可以和ruby <1.9一起工作,這很好。 – Automatico
既然只有'0'和'1',你也可以使用'rand(2).zero?' – Stefan
我通常使用的是這樣的:
rand(2) > 0
您還可以擴展整數創建to_boolean方法:
class Integer
def to_boolean
!self.zero?
end
end
我喜歡用rand
:
rand < 0.5
編輯:此答案用於讀取rand > 0.5
,但rand < 0.5
在技術上更加正確。 rand
返回half-open range [0,1)中的結果,因此使用<
會導致半開範圍[0,0.5]和[0.5,1]的相等賠率。使用>
將導致封閉範圍[0,0.5]和開放範圍(.5,1)的不等式機率。
這很完美。樣本方法產生(理論上)** 50%**概率,但用這個可以調整這個概率。比如說,我希望** 70%**獲得真實價值的機會是'rand> 0.3' – juliangonzalez
@JGonzalezD並且使它更直接和更易讀:**對於** 70%**而言
根據@ a'r的回答,你是否意識到rand(2)== 1'已經是一個布爾值? – Phrogz