カテゴリ: Ruby 更新日: 2026/01/04

Ruby配列のランダム化を完全解説!shuffle・sample・permutation・combinationを初心者向けに理解しよう

ランダム化・シャッフル:shuffle・sample・permutation/combination
ランダム化・シャッフル:shuffle・sample・permutation/combination

先生と生徒の会話形式で理解しよう

生徒

「Rubyで配列の中身をランダムに並び替えたり、くじ引きみたいに選んだりできますか?」

先生

「できますよ。Rubyの配列には、shuffleやsampleといった便利な機能があります。」

生徒

「順番の組み合わせを全部出すこともできますか?」

先生

「permutationやcombinationを使えば、順列や組み合わせも簡単に扱えます。」

1. 配列のランダム化とは?

1. 配列のランダム化とは?
1. 配列のランダム化とは?

ランダム化とは、順番を決めずにバラバラにすることです。トランプをシャッフルしたり、 箱の中から紙を一枚引いたりするイメージです。Rubyでは配列を使うことで、こうした動きを プログラムで簡単に再現できます。

Rubyの配列(Array)は、データを順番に並べて保存する箱のようなものです。 この順番をランダムに変えたり、一部を取り出したりすることで、 ゲーム、抽選、テストデータ作成など、さまざまな場面で活躍します。

2. shuffle:配列をシャッフルする

2. shuffle:配列をシャッフルする
2. shuffle:配列をシャッフルする

shuffleは、配列の中身をランダムな順番に並び替えるメソッドです。 カードをよく混ぜる動作を想像すると分かりやすいです。 元の配列は変えずに、新しい配列を作るのが特徴です。


cards = ["ハート", "ダイヤ", "クラブ", "スペード"]
shuffled = cards.shuffle
puts shuffled

ランダムな順番で表示される

shuffleは非破壊的メソッドです。 つまり、元の配列はそのまま残ります。 元の順番も必要なときに安心して使えます。

3. sample:ランダムに要素を取り出す

3. sample:ランダムに要素を取り出す
3. sample:ランダムに要素を取り出す

sampleは、配列の中からランダムに一つ、または複数の要素を取り出します。 くじ引きや抽選をイメージすると理解しやすいです。


names = ["田中", "佐藤", "鈴木", "高橋"]
puts names.sample

名前が一つ表示される

数を指定すると、複数選ぶこともできます。 このときも、元の配列は変わりません。 初心者の方でも安全に使える便利なメソッドです。

4. permutation:順番を重視した並びを作る

4. permutation:順番を重視した並びを作る
4. permutation:順番を重視した並びを作る

permutation(順列)とは、順番を区別した並び方のことです。 例えば「A→B」と「B→A」は別物として扱います。 Rubyでは配列に対して簡単に順列を作れます。


items = [1, 2, 3]
items.permutation(2) do |p|
  p p
end

[1, 2]
[1, 3]
[2, 1]
[2, 3]
[3, 1]
[3, 2]

順番が変わるだけで結果が増えるため、 データ量が一気に多くなる点には注意が必要です。 小さな配列で使うのが基本です。

5. combination:順番を気にしない組み合わせ

5. combination:順番を気にしない組み合わせ
5. combination:順番を気にしない組み合わせ

combination(組み合わせ)は、順番を区別しません。 「AとB」と「BとA」は同じものとして扱います。 宝くじの番号選びを想像すると分かりやすいです。


numbers = [1, 2, 3]
numbers.combination(2) do |c|
  p c
end

[1, 2]
[1, 3]
[2, 3]

permutationよりも結果が少なくなり、 現実の選択肢に近い形でデータを扱えます。 ランダム処理と一緒に覚えておくと便利です。

6. ランダム系メソッドを使うときの注意点

6. ランダム系メソッドを使うときの注意点
6. ランダム系メソッドを使うときの注意点

ランダム処理は毎回結果が変わるため、 テストや確認のときに戸惑うことがあります。 また、permutationやcombinationは数が増えやすく、 パソコンに負担がかかる場合があります。

初心者のうちは、小さな配列で動きを確認しながら、 shuffleやsampleから慣れていくと安心です。 Rubyの配列操作に慣れることで、 プログラムの理解が一気に深まります。

関連記事:
カテゴリの一覧へ
新着記事
New1
データベース
SQLの処理が遅くなる原因とは?初心者向けにデータベースパフォーマンス最適化を完全解説
New2
Ruby
RubyのネストHash操作を徹底解説!digとtransformメソッドで複雑なデータも楽々
New3
Rails
Railsインデックス設計の極意!爆速サイトを作るためのスキーマ設計ガイド
New4
データベース
SQLのCOMMITとROLLBACKとは?トランザクション操作を初心者向けに完全解説
人気記事
No.1
Java&Spring記事人気No1
Ruby
PATHと環境変数の正しい設定!Windows・Mac・Linux別チェックリスト付き
No.2
Java&Spring記事人気No2
Rails
Railsで日本語と時刻の設定をしよう!初心者でも安心のlocale/zone初期設定チートシート
No.3
Java&Spring記事人気No3
Ruby
Rubyのハッシュを徹底比較!シンボルキーと文字列キーの違いと使い分け
No.4
Java&Spring記事人気No4
Rails
Railsマイグレーションの型選びを完全ガイド!初心者が迷わないカラム設計
No.5
Java&Spring記事人気No5
Ruby
WindowsでRubyをインストールする方法!RubyInstallerとMSYS2を使った完全ガイド
No.6
Java&Spring記事人気No6
Rails
RailsモデルとActive Record基礎|ID戦略を完全理解!AUTO INCREMENT・UUID・ULIDの比較と導入手順
No.7
Java&Spring記事人気No7
Rails
RailsモデルとActive Record基礎|クエリログの読み方を理解してEXPLAIN・joins・includesの違いを学ぼう
No.8
Java&Spring記事人気No8
データベース
ACID特性とは?データベーストランザクションの信頼性を初心者向けに徹底解説