Java で配列をシャッフルする
Siddharth Swami
2023年10月12日
配列は、Java の基本的なデータ構造の 1つです。Java には、配列を処理および処理するための多くの関数とメソッドが備わっています。
このチュートリアルでは、Java で配列をシャッフルする方法を示します。
Java で配列をシャッフルするには random()
メソッドを使う
フィッシャー-イェーツシャッフル配列メソッドを使用して、特定の配列をランダムにシャッフルできます。このメソッドは、特定の配列の最後の要素から開始し、配列内でランダムに選択された要素と交換し続けることを目的としています。
ランダムクラスの Random()
関数を使用して、配列のインデックスをランダムに選択します。java.util
ライブラリから、Random
と Arrays
の 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]
上記の配列では、シャッフルされた配列を見ることができます。毎回新しいシャッフルされた配列を返します。