-1

ポーカー ゲームの作り方を学ぼうとしているので、ウェブサイトでポーカー プロジェクトを探しました。

これは私が見つけたデッキクラスです。

これは、私には意味のないコードの一部です。

   int index_1, index_2;


    for (int i = 0; i < 100; i++) {

        index_1 = generator.nextInt(cards.size() - 1);

        index_2 = generator.nextInt(cards.size() - 1);



        temp = cards.get(index_2);

        cards.set(index_2, cards.get(index_1));

        cards.set(index_1, temp);

    }

}
4

2 に答える 2

1

デッキのランダム シャッフルのように見え、ランダムに 2 枚のカード位置を選びます。は、範囲内nextInt(cards.size() - 1)のランダム インデックスを生成します。[0,cards.size() - 1)

index_1 = generator.nextInt(cards.size() - 1);
index_2 = generator.nextInt(cards.size() - 1);

最初にカードの 1 つを交換する必要があり、そのオブジェクトを失いたくないため、2 枚のカードを交換します。temp交換する最初のカードを保持するために使用されるコードはcards.get(index_2)、最初のカード オブジェクトを取得します。

temp = cards.get(index_2);

1つ目setはオブジェクトを元のindex_2オブジェクトに置き換えindex_1、2つ目はオブジェクトを以前に保存した一時オブジェクトsetに置き換えます。index_1

cards.set(index_2, cards.get(index_1));
cards.set(index_1, temp);

この手順を100次のように実行します。

for (int i = 0; i < 100; i++)

cards.size() - 1がデッキの最後のカードのインデックスであると仮定すると、nextInt呼び出しは最後のカードをスキップしますが、それが意図的であったかどうかは、コンテキストがなければわかりません。

于 2013-07-19T18:26:15.403 に答える
0

このコードが行っているのは、デッキ内の 2 枚のカードを交換することです。これを任意に100回行います。これを行うためのより良い方法は、カードをデッキ内の位置にランダムに割り当てることです。現在のやり方では、特定のグループのカードにまったく触れない可能性があり、同じ位置に以前と同じ順序でカードの塊ができてしまう可能性があります。さらに、300 回ではなく 52 回の移動しか必要ありません (card2 -> temp、card1 -> card2、temp -> card1 )。

于 2013-07-19T18:28:08.553 に答える