ホームページ >ウェブフロントエンド >CSSチュートリアル >Java の Fisher-Yates アルゴリズムを使用した配列のシャッフル
コンピューター サイエンスの分野では、要素の配列またはリストをシャッフルすることは、ゲーム結果のランダム化からデッキ内のカードの配布まで、さまざまなアプリケーションで役立つ一般的な操作です。この目的に最も効果的なアルゴリズムの 1 つは、Knuth Shuffle としても知られる Fisher-Yates Shuffle です。このアルゴリズムは、配列の各置換の可能性が等しいことを保証するため、不偏のランダム シャッフルを作成するのに理想的な選択肢となります。
この記事では、Fisher-Yates Shuffle アルゴリズムの 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 サイトの他の関連記事を参照してください。