【Ruby】sampleメソッドで配列からランダムに要素を取得する方法

Ruby

Rubyのsampleメソッドとは

Rubyのsampleメソッドは、配列からランダムに要素を取り出すことができるメソッドです。

基本的には以下の構文で使用することができます。

配列.sample

また、引数に数値をとると、取得したい要素数を指定することができます。

配列.sample(取得したい要素数)

また、sampleを使用した結果、選択された要素が重複することはありません。

sampleメソッドを使用したコード例

以下はsampleメソッドを使用して、配列からランダムに文字列を取得するコード例です。

["a", "b", "c", "d", "e", "f"].sample 
# => "f"

["a", "b", "c", "d", "e", "f"].sample(3)
# => ["d", "a", "c"]

["a", "b", "c", "d", "e", "f"].sample(6)
# => ["b", "c", "d", "e", "f", "a"]

sampleメソッドを使用した時の例外的な処理

sampleメソッドを使用した際に、知らないと少し戸惑いがちな処理があるので3つ紹介します。

  • 配列の要素数を超えた数を引数に渡した場合
  • 引数に0を渡した場合
  • 配列が空だった場合

具体的なコードは、以下でそれぞれ解説します。

配列の要素数を超えた数を引数に渡した場合

sampleメソッドの引数に配列の要素より大きい数を渡した場合、配列内の要素数が適応されます。

["a", "b", "c", "d", "e", "f"].sample(100)
# => ["a", "b", "f", "e", "d", "c"]

引数に0を渡した場合

sampleメソッドの引数に0を渡した場合は、空の配列が返ります。

["a", "b", "c", "d", "e", "f"].sample(0)
=> []

空の配列の場合

空の配列に対してsampleメソッドを使用するとnilが返ります。

[].sample 
# => nil
タイトルとURLをコピーしました