r.next()) `リストをシャッフルするサートの方法は?
" />
var r = new Random(); var shuffled = ordered.OrderBy(x => r.Next());
<原>動作原則< 本質的に、この方法は要素にランダムに分散され、これらの数値に基づいてソートされます。これにより、各要素が異なる位置に表示されることが保証されますが、場所は実際に生成された乱数によって決定されます。
<替>代替方法要素を直接交換するDurstenFeldバージョンのFisher-Yates Shuffleアルゴリズムを使用することをお勧めします。このような拡張機能を使用して実装できます:
<能>パフォーマンスの最適化パフォーマンスをさらに最適化するために、要素をシャッフルするときにすぐに要素を返すことができ、それにより不必要な作業が削減されます:(このコードは前のコードとまったく同じで、繰り返されます)
<说>重要な説明public static IEnumerable<T> Shuffle<T>(this IEnumerable<T> source, Random rng) { T[] elements = source.ToArray(); for (int i = elements.Length - 1; i >= 0; i--) { int swapIndex = rng.Next(i + 1); yield return elements[swapIndex]; elements[swapIndex] = elements[i]; } }
">
以上が`orderby(x => r.next())`リストをシャッフルするスマートな方法ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。