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