フィッシャー–イェーツのシャッフル
フィッシャー–イェーツのシャッフルの実装でよくある誤りは、取得する乱数の範囲を誤ってしまうことである。このとき、欠陥のあるアルゴリズムは正しく動作しているように見えるが、取得可能な順列を等確率で取得することができず、そしてすべての順列を取得することもできない。例えば、上記の例で取得するインデックス j を、よくあるOff-by-oneエラーによってインデックス i よりも1小さい範囲で実行する。その場合、この処理はサットロのアルゴリズムになってしまい、取得できる順列は円順列のみとなる。特にこのアルゴリズムでは、すべての要素は元の位置に配置されることがなくなってしまうのである。
同様に、インデックス j を常に「配列のすべて」から取得する場合もまた、少ないが明確な偏りを生じさせてしまう。これは、交換の回数が n となり、要素数nの配列が取りうる順列の組み合わせは n! であることによって引き起こされる。
フィッシャー–イェーツのシャッフル (英: Fisher–Yates shuffle) は、有限集合からランダムな順列を生成するアルゴリズムである。言い換えると、有限列をランダムな別の(シャッフルされた)順序の有限列に並べ直す方法である。この名前はロナルド・フィッシャーおよびフランク・イェーツから名付けられた。また、クヌースのシャッフル(ドナルド・クヌースから)とも呼ばれる。フィッシャー–イェーツのシャッフルは、全ての順列の組み合わせが等しく存在しうるため、偏りがない。このアルゴリズムの改良されたバージョンはさらに効果的であり、処理時間はシャッフルされる要素数に比例するのみで、余分な時間はかからず、また追加の保持領域を必要としない。フィッシャー–イェーツのシャッフルの派生にサットロのアルゴリズムがあり、こちらは長さ n のランダムな円順列(英語版)を生成する。
フィッシャー–イェーツのシャッフルは、帽子に入れた数字の書かれたくじ(組合せ数学的に区別可能なもの)をなくなるまで取り出して並べていく手順に似ている。