【C#】フィッシャー-イェーツシャッフルによるListのシャッフル

リストの各要素をランダムな位置の要素と入れ替える方法は基本的なシャッフル方法ですが、より効率的で均一にシャッフルされるアルゴリズムとして「フィッシャー-イェーツシャッフル」が一般的に使用されます。

以下に、フィッシャー-イェーツシャッフルを使用したリストのシャッフル方法を示します。

この資料は、C#プログラミングの初学者向けに、フィッシャー-イェーツシャッフルを使ってList<T>の要素を効率的にシャッフルする方法を説明します。

必要な知識

  • 基本的なC#の文法
  • 配列やリストの使い方
  • クラスとオブジェクトの基本

内容

  1. Randomクラスの基本
  2. List<T>の基本
  3. フィッシャー-イェーツシャッフルによるリストの要素のシャッフル

1. Randomクラスの基本

Randomクラスは、ランダムな数値を生成するために使用されます。

2. List<T>の基本

List<T>は、動的にサイズが変わる配列のようなコレクションです。

3. フィッシャー-イェーツシャッフルによるリストの要素のシャッフル

ここでは、フィッシャー-イェーツシャッフルを使ってリストの要素をシャッフルするプログラムを作成します。

using System;
using System.Collections.Generic;

// メインのプログラム
Random random = new Random();

// List<int>の作成
List<int> numbers = new List<int> { 10, 20, 30, 40, 50 };

// フィッシャー-イェーツシャッフル
for (int i = numbers.Count - 1; i > 0; i--)
{
    int randomIndex = random.Next(i + 1);
    int temp = numbers[i];
    numbers[i] = numbers[randomIndex];
    numbers[randomIndex] = temp;
}

// シャッフルされたリストの内容を表示
Console.WriteLine("シャッフルされたリスト:");
foreach (int number in numbers)
{
    Console.WriteLine(number);
}

解説

  1. Randomクラスのインスタンスを作成します。
  2. List<int>のインスタンスを作成し、初期値を設定します。
  3. フィッシャー-イェーツシャッフルを使用してリストの要素をシャッフルします。
    • リストの末尾から開始し、ランダムな位置の要素と入れ替えます。
    • この処理をリストの先頭に向かって繰り返します。
  4. シャッフルされたリストの内容を表示します。

まとめ

この資料では、フィッシャー-イェーツシャッフルを使ってList<int>の要素を効率的にシャッフルする方法について説明しました。この方法を応用することで、リストの要素を均等にランダムに並び替える処理を簡単に実装できます。


shフィッシャー-イェーツシャッフルは、リストの要素を均等にシャッフルするために設計された効率的なアルゴリズムです。これを使用することで、より信頼性の高いシャッフルが実現できます。

C#

Posted by hidepon