[Java]Randomで配列(Array)をシャッフルするには?

Java

どうも、ちょげ(@chogetarou)です。

Randomを使って配列(Array)をランダムに並び替えてシャッフルする方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

Randomを使って配列(Array)をランダムに並び替えてシャッフルするには、フィッシャー–イェーツのシャッフルを使います。

まず、Randomのインスタンスを生成します。

そして、forループでフィッシャー–イェーツのシャッフルを実装します。

フィッシャー–イェーツのシャッフルに使うランダムなインデックスは、RandomのnextInt()で生成します。

//array=シャッフルする配列
Random random = new Random();
int index, temp;
for (int i = array.length - 1; i > 0; i--)
{
    index = random.nextInt(i + 1);  
    temp = array[index];
    array[index] = array[i];
    array[i] = temp;
}

上記のforループは、対象の配列をランダムに並び替えてシャッフルします。

使用例

import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {
        int[] numbers = new int[]{ 1, 2, 3, 4, 5, 6 };
        
        shuffleArray(numbers);
        
        for (int i : numbers) {
            System.out.println(i);
        }
    }
    
    private static void shuffleArray(int[] array)
    {
        int index, temp;
        Random random = new Random();
        for (int i = array.length - 1; i > 0; i--)
        {
            index = random.nextInt(i + 1);
            temp = array[index];
            array[index] = array[i];
            array[i] = temp;
        }
    }
}
出力:
6
4
1
2
5
3

コメント

タイトルとURLをコピーしました