フィッシャー–イェーツのシャッフル
ソートによる手法は番号を付与するため、フィッシャー–イェーツのシャッフルとは異なり、並列的な動作を行う。
シャッフルによる手法の派生として、プログラミング言語がサポートしている、ユーザ独自拡張の比較機能を使用して、比較時にランダムな値を返すようにしてシャッフルを行う方法がある。しかし、これは「きわめて悪い方法」であり、この方法は結果がまったく均等に分布せず、ソートのアルゴリズムもきわめて重い。ソートのアルゴリズムにクイックソートを実装されている場合を考える。このとき、はじめに選択されるピボット(英語版)は固有の要素とする。このアルゴリズムはピボットとその他の要素すべてを比較し、大小を分割し、大小それぞれのグループのサイズによりピボット要素の最終位置が決められる。乱数列が均一に分布されるためには、ピボット要素の最終位置はどの位置にも等しく配置される可能性がなければならない。しかし、はじめの比較において、「より小さい」「より大きい」の判定を等しく行ってしまうため、ピボット要素位置の確率は p = 1/2 の二項分布をとる。つまり、両端よりも中央に近い方に配置されてしまう可能性が高い。
最悪のケースを考えれば、永遠に生成と破棄を繰り返す可能性は存在するが、繰り返しの期待回数は1よりも小さくなる。
関連して、乱数生成器が0以上1未満の浮動小数点数を生成される場合の問題を考える。この場合、取得する整数は乱数を範囲の大きさで乗算した後に、小数点以下を切り捨てることで得られる。浮動小数点数による乱数を正しく生成したとしても、その精度には限界があるため、取得したい範囲に正確に分割することができない場合に偏りが生じる。上記の場合と比べると、その偏りは体系的な傾向を示すものではないが、確実に存在する。
例として、基数部が1ビット、指数部が符号付き4ビットの整数で表現される浮動小数点数を考える。このような貧弱な実装は現実には存在しないであろうが、ここでは分かりやすさを優先する。この浮動小数点数は、0以上1未満の範囲では、0から0.125(1/8)単位で0.825(7/8)までの8通りの値をとる。このような浮動小数点数を生成する乱数生成器を使い、0から2までの数値を取得したい場合、乱数に3を掛け、小数点以下を切り捨てる。そのような操作を行ったとき、結果が0または1となる場合がそれぞれ3通りずつ、2となる場合が2通りとなり、2が取得される確率は他の数値よりも低くなる。浮動小数点数の精度が上昇したとしても、取得したい範囲が 2でなければ偏りが生じてしまう。