r.next()) `コレクションをシャッフルするロス? " /> var r = new Random(); var shuffled = ordered.OrderBy(x => r.Next());このアルゴリズムは、最良のランダムソートメソッドではありません。各要素に割り当てられた乱数に基づいて要素をソートし、時間の複雑さがO(n log n)になります。これは、フィッシャーイメートのアルゴリズムよりもはるかに低い(時間の複雑さはO(n))。 基礎となるメカニズム アルゴリズムは、コレクション内の各要素に乱数を割り当て、これらの数値に基づいて要素をソートします。このプロセスは、要素の順序を効果的にランダムにしますが、これは実際のランダムソート操作ではありません。 より適切なランダムソートメソッド この方法はランダムなソート結果を生成できますが、効率が低いため、最初の方法ではありません。 Fisher-Yatesランダムソートアルゴリズムは、計算の複雑さが低く、効率が高くなります。さらに、特別なシャッフル拡張方法は、明確で簡潔なランダムソート操作式を提供できます。 シャッフルの拡張方法の実装 Fisher-Yatesアルゴリズムを使用して基本的なシャッフル拡張法を実装するには、以下の手順に従ってください。 入力コレクションは配列に変換されます。 ランダム交換リストの要素を使用します(たとえば、など)。 交換に戻ります。 この方法を使用して、開発者はO(n)の時間の複雑さでコレクションを迅速かつ効果的に並べ替えることができます。 パフォーマンスの最適化 パフォーマンスをさらに改善するために、拡張方法は効果的に要素を交換し、ランダムソートプロセスでそれらを返すことができ、それにより不必要な操作によって消費される時間を最小限に抑えることができます。