Rubyのshuffleとshuffle!メソッド:配列の要素をランダムに並べ替える
Rubyにおいて、配列の要素をランダムに並べ替える機能は多くの場面で役立ちます。
shuffleとshuffle!メソッドはこの目的に使用され、配列内の要素をランダムに配置し直します。
本記事では、これらのメソッドの使用法、相違点、実用的な例を紹介します。
shuffleメソッドの基本
shuffleメソッドは配列の要素をランダムに並べ替えた新しい配列を生成します。このメソッドは元の配列を変更しません。
基本的な使用方法
配列の要素をランダムに並べ替えます。
ソースコード例: shuffleメソッドの基本的な使用
1 2 3 |
array = [1, 2, 3, 4, 5] shuffled_array = array.shuffle puts shuffled_array.join(', ') |
この例では、配列の要素がランダムに並び替えられた新しい配列が生成されます。出力結果は実行ごとに異なりますが、例えば以下のようになります。
出力結果
4, 1, 3, 5, 2
KindleUnlimited会員であれば、全ての本をご覧頂けます。 配列、イテレータ、ブロックを理解すれば、Rubyプログラミングの世界が変わる 第1版
shuffle!メソッドの基本
shuffle!メソッドも配列の要素をランダムに並び替えますが、shuffleと違って元の配列自体を変更します。
このメソッドを使用すると、配列がその場でランダムに再配置されます。
破壊的な方法で配列をランダムに並び替える
元の配列を直接ランダムに並び替えます。
ソースコード例: shuffle!メソッドの使用
1 2 3 |
array = [1, 2, 3, 4, 5] array.shuffle! puts array.join(', ') |
この例では、元の配列がランダムに並び替えられます。
出力結果は実行ごとに異なりますが、例えば以下のようになります。
出力結果
2, 5, 1, 4, 3
shuffleとshuffle!の違い
shuffleとshuffle!の主な違いは、元の配列を変更するかどうかです。
shuffleは元の配列を変更せず、新しい配列を返します。一方でshuffle!は元の配列を直接変更します。
同じ条件でshuffleとshuffle!を使った場合
同じ条件でshuffleとshuffle!を使用した場合の違いを確認します。
ソースコード例: shuffleとshuffle!の違い
1 2 3 4 5 6 |
original_array = [1, 2, 3, 4, 5] shuffled_array = original_array.shuffle original_array.shuffle! puts "Shuffled array: #{shuffled_array.join(', ')}" puts "Original array after shuffle!: #{original_array.join(', ')}" |
この例では、shuffleで作成された新しい配列と、shuffle!によって変更された元の配列を比較します。出力結果は実行ごとに異なりますが、例えば以下のようになります。
出力結果
Shuffled array: 2, 3, 1, 5, 4
Original array after shuffle!: 4, 1, 3, 5, 2
shuffleメソッド応用例
shuffleとshuffle!メソッドは、単純な数値や文字列の配列だけでなく、オブジェクトを含む複雑な配列にも応用できます。
オブジェクトの配列での使用
オブジェクトを含む配列でのshuffle/shuffle!メソッドの使用例を見てみましょう。
ソースコード例: オブジェクトの配列でのshuffle/shuffle!メソッドの使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
class Product attr_reader :name, :price def initialize(name, price) @name = name @price = price end end products = [ Product.new("Apple", 120), Product.new("Banana", 80), Product.new("Cherry", 200) ] shuffled_products = products.shuffle puts shuffled_products.map(&:name).join(', ') |
この例では、商品の配列がランダムに並び替えられます。出力結果は実行ごとに異なりますが、例えば以下のようになります。
出力結果
Banana, Apple, Cherry
まとめ
Rubyのshuffleとshuffle!メソッドは配列の要素をランダムに並び替えるメソッドです。
これらのメソッドを適切に使用することで、Rubyプログラミングにおける配列操作の幅が広がります。
Rubyでは、配列の要素をランダムに並び替えることで、多様なデータ処理が可能になります。
たとえば、ゲームのカードをシャッフルする、あるいはプレゼンテーションの順番を決めるといった場面で役立ちます。
shuffle
メソッドは配列の要素をランダムに並び替えた新しい配列を返し、shuffle!
メソッドは配列自体をランダムに並び替えます。
元の配列を変更するかどうかを理解し、状況に応じて適切なメソッドを選択することが重要です。
最後まで読んで頂き、ありがとうございました。少しでもお役にたてたなら幸いです!
こちらもCHECK
-
【Ruby rails】配列やクラスをソートするsort、sort_byメソッドを徹底解説
配列をソートする: Rubyのsort, sort!およびsort_byメソッド Rubyのsort, sort! および sort_by メソッドは配列の要素を整理するのに非常に便利です。 この記事 ...
続きを見る