かもメモ

自分の落ちた落とし穴に何度も落ちる人のメモ帳

Ruby ランダムに true / false を返したい

モックアップを作っていて、条件によって表示/非表示が分かれる要素があり、ランダムで表示/非表示させたいと思いました。

ランダムに 0 / 1 を返す

ぱっと思いついたのが他のJavaScriptとかでもよくやる 0 || 1 を返す方法。

Random.rand(0 .. 1)

Random#rand に Range を渡すと Range 内の値がランダムに返されます。

ただ、Rubyの場合 nilfalse 以外は true なので 0true として扱われてしまいます。したがって if文で条件分岐させるには次のように書かなけれなりませんでした。

if Random.rand(0 .. 1) == 1
  # true の場合の表示
end

array.sample を使う

array.sample
sampleメソッドは、配列の要素を1つランダムに返します。配列が空の場合はnilを返します。
ref. sample (Array) - Rubyリファレンス

配列内からランダムに要素を取り出せるので、[true, false] という配列を使えばランダムに true / false することができます。

if [true, false].sample
  # true の場合の表示
end

 
Ruby でランダムでtrue / false したい時は sample メソッドを使う方が良さそうです。
普段 JavaScript がメインなので Ruby0true なの結構忘れがち…


[参考]

ゼロからわかる Ruby 超入門 (かんたんIT基礎講座)

ゼロからわかる Ruby 超入門 (かんたんIT基礎講座)

👆おうちキーボードこれ買ってみた。矢印キーは現行のMacキーボードより上下のミスタイプが減るので断然良いです。ひとつだけ左上が`キーにならもっと良かったナ… (これがキーボード沼への入り口なのか…