C# 整数リストの効率的なランダム並べ替えアルゴリズム
この記事では、整数のリストをランダムに並べ替えたりシャッフルしたりするためのより効率的な方法を検討します。
フィッシャー・イェーツ シャッフル アルゴリズム
フィッシャー・イェーツのシャッフル アルゴリズムは、リストを効率的にランダム化する線形時間アルゴリズムです。仕組みは次のとおりです:
0 から n-1 までのリスト内のインデックス i ごとに、次の操作を実行します。
<code>int j = random.Next(i + 1); 交换索引i和j处的数值;</code>
アルゴリズムの既存の問題を改善します
提案されたアルゴリズムにはいくつかの欠点があります:
コードの実装
次のコード スニペットは、C# で Fisher-Yates シャッフル アルゴリズムを実装しています。
<code class="language-csharp">using System; using System.Collections.Generic; class Program { static void Shuffle<T>(IList<T> list) { Random random = new Random(); for (int i = 0; i < list.Count; i++) { int j = random.Next(i + 1); T temp = list[i]; list[i] = list[j]; list[j] = temp; } } static void Main(string[] args) { List<int> values = new List<int>(); for (int i = 0; i < 10; i++) { values.Add(i); } Shuffle(values); Console.WriteLine(string.Join(", ", values)); } }</code>
以上がC# で整数リストを効率的にシャッフルするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。