はじめてのRuby!配列をランダムに取得・入れ替え|sample・shuffle

Rubyには配列の要素をランダムで取得・入れ替えすることができる便利なメソッドが用意されています。

「配列の要素の中からランダムで値を取得したい」
「配列の要素をランダムで並び替えたい」

といった悩みを抱えている方に向けて、この記事では以下の内容について解説していきます。


・配列をランダムに取得・入れ替えするには
・sampleメソッドの使い方
・shuffleメソッドの使い方

配列をランダムで取得できるsample、shuffleメソッドについてわかりやすく解説していますので、ぜひ参考にしてください!

それではいってみましょう!

配列をランダムに取得・入れ替えするには

配列にはさまざまなメソッドが用意されていますが、配列の内容をランダムに取得したり、ランダムに入れ替えを行うにはsampleメソッド、shuffleメソッドを使用します。

配列をランダムで取得する処理は、すごろくやカードゲームなどのゲームアプリでよく使われます。

これらのメソッドを使うことで、わざわざランダムで取得する処理を実装しなくても、メソッドを使って簡単に取得できます。

要素をランダムに取得するsampleメソッド

sampleメソッドは、配列の要素1つをランダムに取得します。

sampleメソッドの書き方:

配列.sample
配列.sample(num)

配列が空だった場合はnilを返します。

引数を指定しない場合は要素を1つランダムで取得します。

引数を指定した場合は指定した数だけ要素をランダムで取得します。

要素をランダムに入れ替えるshuffleメソッド

shuffleメソッドは配列の要素をランダムに入れ替えて取得します。

shuffleメソッドの書き方:

array.shuffle
array.shuffle!

配列が空だった場合はnilを返します。

「!」を付加した破壊的メソッドの場合は配列自信を入れ替えた値に変更されます。

sampleメソッドの使い方

引数なしの場合

では実際にsampleメソッドを使ってみましょう。

以下のサンプルをご覧ください。

fruits = ["apple", "orange", "melon", "banana", "pineapple"]

p fruits.sample

実行結果:

"banana"

このようにランダムな要素が取得できました!

プログラムを実行するたびにランダムで要素が取得されます。

引数ありの場合

引数ありの場合のプログラムを見てみましょう。

fruits = ["apple", "orange", "melon", "banana", "pineapple"]

p fruits.sample(2)
p fruits.sample(4)
p fruits.sample(8)

実行結果:

["banana", "apple"]
["orange", "melon", "apple", "banana"]
["pineapple", "melon", "banana", "apple", "orange"]

このように引数で指定した要素分ランダムで取得することができました!

など、引数が配列の要素数よりも大きい場合は配列の全要素分ランダムで取得できます。

shuffleメソッドの使い方

続いてshuffleメソッドの使い方について見ていきましょう。

以下のサンプルをご覧ください。

fruits = ["apple", "orange", "melon", "banana", "pineapple"]

p fruits.shuffle

実行結果:

["melon", "pineapple", "apple", "orange", "banana"]

実行結果のとおり要素をランダムで並べ替えた配列を取得することができました!

shuffleメソッドを使えば、このように簡単にランダムに並び替えた要素が取得できることがわかりますね!

また、破壊的メソッドshuffle!を使えば、元の配列自信の並び替えを行います。

fruits = ["apple", "orange", "melon", "banana", "pineapple"]

fruits.shuffle!

p fruits

実行結果:

["banana", "melon", "apple", "orange", "pineapple"]

配列についてもっとよく知りたい方へ

配列の基礎からさまざまな使い方については、以下の記事でも詳しく解説していますのでぜひ参考にしてください!

【Ruby入門】配列の基礎から応用的な使い方まとめ
更新日 : 2020年7月31日

まとめ

ここでは、配列の要素をランダムで取得・並び替えできるsample、shuffleメソッドについて解説しました。

  • 配列をランダムに取得・入れ替えするには
  • sampleメソッドの使い方
  • shuffleメソッドの使い方

とくにゲームなどのアプリケーションで、ランダムで値を取得する処理はよく使われますので、使い方については理解しておきましょう。

もし、sample・shuffleメソッドの使い方を忘れてしまったら、この記事を思い出してくださいね!

Writer

ヤマシタ

株式会社SAMURAI

システムエンジニアとして10年勤務→フリーランスへ。
大規模システム開発からWebアプリ開発まで経験あり。最近ではPythonの機械学習に挑戦中。プログラミング初学者に向けてわかりやすく、ためになるコンテンツ作りを心がけています。

あなたの目的に合わせた
SAMURAI ENGINEERの運営サービス

SAMURAI ENGINEER Pro

未経験でも挫折しないプログラミングスクール

詳細はこちら

SAMURAI ENGINEER Plus

日本最大級のサブスク型オンラインITスクール

詳細はこちら

SAMURAI ENGINEER Freelance

「一人で稼げる」スキルを身につける

詳細はこちら