ホームページ  >  記事  >  ウェブフロントエンド  >  Java の Fisher-Yates アルゴリズムを使用した配列のシャッフル

Java の Fisher-Yates アルゴリズムを使用した配列のシャッフル

Barbara Streisand
Barbara Streisandオリジナル
2024-09-26 06:46:42458ブラウズ

Shuffling Arrays with the Fisher-Yates Algorithm in Java

導入

コンピューター サイエンスの分野では、要素の配列またはリストをシャッフルすることは、ゲーム結果のランダム化からデッキ内のカードの配布まで、さまざまなアプリケーションで役立つ一般的な操作です。この目的に最も効果的なアルゴリズムの 1 つは、Knuth Shuffle としても知られる Fisher-Yates Shuffle です。このアルゴリズムは、配列の各置換の可能性が等しいことを保証するため、不偏のランダム シャッフルを作成するのに理想的な選択肢となります。

この記事では、Fisher-Yates Shuffle アルゴリズムの Java 実装について説明します。提供されているコードは、整数の配列を所定の位置で効率的にシャッフルし、このアルゴリズムの優雅さと有効性の両方を示しています。

フィッシャー・イェーツのシャッフル アルゴリズム

フィッシャー・イェーツ シャッフル アルゴリズムは、配列を末尾から先頭まで反復処理し、各要素を、配列内で前に出現するランダムに選択された要素 (現在の位置を含む) と交換することによって動作します。このプロセスにより、配列のすべての順列の確率が等しいことが保証されます。

Javaコードの実装

これは、フィッシャー・イェーツ シャッフル アルゴリズムの Java 実装です:

import java.util.*;

class FYShuffleAlgorithm {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 4, 5, 6};

        shuffle(arr);
    }

    public static void shuffle(int[] arr) {
        Random rand = new Random();
        for (int i = arr.length - 1; i > 0; i--) {
            int randomIndex = rand.nextInt(i + 1);
            int tmp = arr[i];
            arr[i] = arr[randomIndex];
            arr[randomIndex] = tmp;
        }
        System.out.println(Arrays.toString(arr));
    }
}

コードの説明
初期化:
main メソッドは、整数の配列 arr を値 {1, 2, 3, 4, 5, 6} で初期化し、shuffle メソッドを呼び出してこの配列をシャッフルします。

以上がJava の Fisher-Yates アルゴリズムを使用した配列のシャッフルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。