私はこれを返すために、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
。各操作を1,000万回実行したときのrand
方法は2.179秒でした。sample
この方法は、1.645sました。
三項演算子を削除するのはどうですか。
rand(2) == 1
[true, false].sample
、それが何をするのか即座に明らかであるので、私はより好きです。rand(2) == 1
Ruby 1.9未満でも動作しますが、これは良いことです。
0
and しかないので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)の不等確率が発生します。<
>
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
はすでにブール値であることに気付きましたか?