IndexOutOfBoundsException试图改组牌

use*_*349 1 java random shuffle

我试图洗牌一副纸牌.

public void shuffle()
{
    int rand1;
    int rand2;
    Random randomGenerator = new Random();

    for (int i = 0; i < deck.size(); i++) {

        // pick a random index between 0 and size of the deck - 1
        rand1 = randomGenerator.nextInt(10);
         rand2 = randomGenerator.nextInt(10);

        // swap rand1 and rand2
        Card temp = deck.get (rand1);
        deck.set(rand1, deck.get (rand2)); 
        deck.set(rand2, temp); 
    }
}
Run Code Online (Sandbox Code Playgroud)

然后它说:

java.lang.IndexOutOfBoundsException; Index:8; size:4(in java.util.ArrayList)
Run Code Online (Sandbox Code Playgroud)

怎么了?

jas*_*son 6

这条线

rand1 = randomGenerator.nextInt(10);
Run Code Online (Sandbox Code Playgroud)

应该

rand1 = randomGenerator.nextInt(deck.size());
Run Code Online (Sandbox Code Playgroud)

并且类似地rand2.