シャッフルされたカードのデッキを生成するメソッドを書くとしましょう。非常に簡単にするために、スートを無視すると、52 枚のカードがあります。
1 つのアルゴリズムは次のようになります。
- 最初の要素に 1、2 番目の要素に 2 というように、52 要素の配列を設定します。
- X 回反復する for ループを作成し、反復ごとにランダムに 2 枚のカードを選んで交換します。
- X が大きいほど、シャッフルはランダム化されます。
別のアルゴリズム:
- 前のように配列にデータを入力します。
- 26 回反復する for ループを作成し、反復ごとに 2 つの乱数を選択し、これらの 2 つの数値を、新たに選択した数値を格納する別の 52 要素配列の連続する先頭に配置します。
- 各反復で、新しい配列に追加された元の配列から 2 枚のカードを削除します。
シャッフルにはより良いアルゴリズムがあることは知っていますが、これら2つに関しては、どちらが優れているのですか?またその理由は何ですか?