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

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

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

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


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

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

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

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

配列にはさまざまなメソッドが用意されていますが、配列の内容をランダムに取得したり、ランダムに入れ替えを行うには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

SEからWebエンジニアへ転職した理由

侍エンジニア塾卒業生の小池さんは、以前は社内SEとして約5年ほど勤務していました。しかし業務内容は社内のヘルプデスク対応など、プログラムを書く仕事は全くなかったそうです。

SEながらプログラムを書けない現状に「将来仕事がなくなるんじゃないか」と不安を感じ、プログラミング学習を決意。

弊社スクールで学習し、無事ベンチャー企業のプログラマーとして転職に成功しました。そんな小池さんの学習法や転職体験談を伺いましたので、是非ご覧ください。

「プログラミングができないSEは仕事がなくなる」不安を感じたSEが未経験から転職成功するまで
更新日 : 2019年10月7日

書いた人

ヤマシタ

エンジニア歴10年のフリーランスエンジニア。ITに関わるさまざまなコンテンツの企画・制作も行っています。
ITに関してはノウハウ系、ライフハック系、トレンド系など、200本以上の執筆経験があります。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説