Fisher-Yates Shuffle を使用して C# で整数リストのランダム化を強化する
C# での優れた整数リストのランダム化のために、Fisher-Yates シャッフル アルゴリズムは大幅な改善をもたらします。
より効率的なアプローチ:
フィッシャー・イェーツのシャッフルはリストの最後から始まります。 これを繰り返して、各要素のリストの残りのシャッフルされていない部分内にランダムなインデックスを生成します。その後、現在の要素が、ランダムに選択されたインデックスの要素と交換されます。
この方法は、シャッフルされていない要素の徐々に小さいセットからランダムに選択するため、他の手法を上回ります。 アルゴリズムは次のように要約できます:
<code>for i = n-1 down to 1 do j = random integer with 0 <= j <= i swap a[i] and a[j]</code>
現在の方法では不十分な理由:
現在のランダム化方法には 2 つの重要な欠点があります:
非効率的な要素の選択: ランダム化が進行するにつれて、交換する未選択の要素を見つける効率がますます低くなります。
無限ループの可能性: リストに奇数の要素が含まれている場合、スワップごとに 3 つの選択されていない要素を見つける必要があるため、アルゴリズムが完了しない可能性があります。
以上がFisher-Yates Shuffle は C# で整数リストのランダム化をどのように最適化できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。