およびシャッフルリストを使用してください:それは効率的なアルゴリズムですか? Random
OrderBy
この記事では、と
Random
method OrderBy
各要素の乱数を生成するために提供され、これらの数値に基づいてリストを再開するコード:
評価<code>var r = new Random(); var shuffled = ordered.OrderBy(x => r.Next());</code>この方法は非常に直感的に見えますが、いくつかの欠点があります:
コンピューティングの複雑さ:
時間の複雑さはo(n log n)であり、これは大規模なリストでは非効率的です。より良いシャッフルアルゴリズムには、O(n)の複雑さがあります。潜在的な問題:
この拡張方法は、Fisher-Yatesのシャッフルの使用を簡素化し、新しい配列を生成する必要性を回避します。
結論
およびはシャッフルに使用できますが、効率と逸脱の問題があります。 Fisher-Yates Shuffleは、より効率的で誘導的でないソリューションを提供します。これは、シャッフルする必要があるほとんどのアプリケーションで最初の選択肢です。
以上が「ランダム」と「Orderby」を使用することは、リストをシャッフルする効率的な方法ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。