はじめての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入門】配列の基礎から応用的な使い方まとめ
更新日 : 2019年7月17日

まとめ

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

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

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

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

LINEで送る
Pocket

ITエンジニアへ転職したい方におすすめ

自分を評価してくれる企業に転職して年収を上げたい! 自分のスキルにあった独自案件を知りたい!
エンジニアは今もっとも注目されている職業の1つ。エンジニアになって年収を増やしたい方や、あなたのスキルに見合った企業へ転職したいエンジニアの方も多いですよね。

しかし、大手の転職媒体は扱う求人数が多くても、誰もが登録しているので競争率もかなり高くなっています。そのため、あなたの条件に見合った企業を見つけても転職するためには、相応の努力とスキルが必要となります。

こういった媒体では、未経験からエンジニアを目指す方やエンジニア歴2〜3年で転職を考えている方にとって、最適な転職環境とはいえません。

そこでオススメしたいのが、未経験者や若手エンジニア向けの独自案件を多く掲載している「侍ワークス」です。

侍ワークスは、独自案件を多く掲載しているだけでなく、

・応募から就業まで一貫したサポート

・就業後もアフターフォロー

といった経験の浅い方や初めてエンジニアを目指す方にも安心のフォロー体制が整っています。もちろん登録は完全無料!しかも案件を見るだけなら登録も不要です。

まずは、お気軽にどんな求人があるか見てみてください。あなたにピッタリの企業がきっと見つかりますよ! 侍ワークスの求人情報を見る

書いた人

ヤマシタ

システムエンジニアとして10年勤務→フリーランスへ。現在は侍ブログ編集部としてこれまでに200記事以上の記事を執筆。
大規模システム開発からWebアプリ開発まで経験あり。最近ではPythonの機械学習に挑戦中。