6

この方法を使用するように促すものは何ですか?

更新:要点がわかりました。「シャッフルは自明なアルゴリズムではない」というウリの理由が好きです。その通りです。

4

4 に答える 4

12

要素の順序付けられたシーケンスをランダムにシャッフルしたい理由はたくさんあります。たとえば、トランプのデッキ。

並べ替えと同様に、シャッフルも簡単なアルゴリズムではありません。そのため、ライブラリ関数が必要になることはよくあることです。

なぜリストなのかというと、明らかにそれは順序付けられたコレクションである必要があるため、一般的なコレクションではありません。リストとそのサブタイプのみが順序付けされることが保証されています。Collections クラスは配列の操作を提供しませんが、ArrayList をこのメソッドに渡すことができます (おそらく、パフォーマンスのために渡す必要があります)。

于 2010-05-31T06:48:26.077 に答える
5

ええと、コレクションがあり、それをシャッフルしたい場合...

最も明白な例は、個々のカードを表すオブジェクトと、シャッフルするデッキを表すコレクションがあるカード ゲームです。

もう 1 つの例は、アンケートで複数の回答をユーザーに提示する場合で、回答の順序によって偏りが生じないようにする場合です。そのため、各ユーザーにシャッフルされた一連の回答を提示して、そこから選択できるようにします。 .

于 2010-05-31T06:46:11.850 に答える
1

では、トランプのデッキをモデリングしていると想像してください。Shuffle は、最初に作成する関数の 1 つです。

コレクションの内容をランダム化したいときはいつでも、シャッフルを使用します。

于 2010-05-31T06:46:51.070 に答える
1

この方法をどのように使用できるかについてのアイデア:

  • ゲームでカードをシャッフルする
  • ソート アルゴリズムのテスト ケースで配列をランダム化する
  • テスト スイート内のテスト ケースをシャッフルして、相互に依存しないようにする
  • 巡回セールスマンのような NP 完全問題を解決しようとする場合、1 つのアプローチは、入力を取得し、それを数回シャッフルしてから、最短の長さの結果を使用することです。これにより、O(N) 時間 (N はノード数) で実行されるソリューションが得られます。
于 2010-05-31T06:51:38.267 に答える