Java で配列をシャッフルする

Siddharth Swami 2023年10月12日 Java Java Array
  1. Java で配列をシャッフルするには random() メソッドを使う
  2. Java で配列をシャッフルするには shuffle() メソッドを使う
Java で配列をシャッフルする

配列は、Java の基本的なデータ構造の 1つです。Java には、配列を処理および処理するための多くの関数とメソッドが備わっています。

このチュートリアルでは、Java で配列をシャッフルする方法を示します。

Java で配列をシャッフルするには random() メソッドを使う

フィッシャー-イェーツシャッフル配列メソッドを使用して、特定の配列をランダムにシャッフルできます。このメソッドは、特定の配列の最後の要素から開始し、配列内でランダムに選択された要素と交換し続けることを目的としています。

ランダムクラスの Random() 関数を使用して、配列のインデックスをランダムに選択します。java.util ライブラリから、RandomArrays の 2つのクラスをインポートします。

例えば、

import java.util.Arrays;
import java.util.Random;
public class ShuffleExample {
  static void rand(int array[], int a) {
    // Creating object for Random class
    Random rd = new Random();

    // Starting from the last element and swapping one by one.
    for (int i = a - 1; i > 0; i--) {
      // Pick a random index from 0 to i
      int j = rd.nextInt(i + 1);

      // Swap array[i] with the element at random index
      int temp = array[i];
      array[i] = array[j];
      array[j] = temp;
    }
    // Printing the random generated array
    System.out.println(Arrays.toString(array));
  }

  public static void main(String[] args) {
    int[] ar = {1, 2, 3, 4, 5, 6, 7, 8};
    int b = ar.length;
    rand(ar, b);
  }
}

出力:

[5, 4, 6, 2, 8, 1, 7, 3]

Java で配列をシャッフルするには shuffle() メソッドを使う

Collection クラスの shuffle() 関数は、ユーザーが指定したリストを取得し、ランダムにシャッフルします。この機能は使いやすく、以前の方法よりも時間がかかりません。また、コードの行が減ります。

配列を取得し、最初にそれをリストに変換します。次に、shuffle() 関数を使用してこのリストをシャッフルします。最後に、このリストを配列に戻し、出力します。

以下のコードを参照してください。

import java.util.*;
public class ShuffleExample2 {
  public static void main(String[] args) {
    Integer[] array = {1, 3, 5, 7, 9};
    List<Integer> list = Arrays.asList(array);

    Collections.shuffle(list);
    list.toArray(array);
    System.out.println(Arrays.toString(array));
  }
}

出力:

[7, 9, 3, 1, 5]

上記の配列では、シャッフルされた配列を見ることができます。毎回新しいシャッフルされた配列を返します。

チュートリアルを楽しんでいますか? <a href="https://www.youtube.com/@delftstack/?sub_confirmation=1" style="color: #a94442; font-weight: bold; text-decoration: underline;">DelftStackをチャンネル登録</a> して、高品質な動画ガイドをさらに制作するためのサポートをお願いします。 Subscribe

関連記事 - Java Array