Эффективно ли работает мой метод?

Я пишу код для колоды карт, который тасует колоду карт. Я протестировал код, но я действительно не знаю, действительно ли он делает то, что должен делать правильно? Что вы думаете?

Это код метода перемешивания :

public void shuffle()
{
    for( int x = myDeck.size(); x > 0 ; x--) 
     {
        Random rn = new Random();
        int index1 = rn.nextInt(52);
        Card c = myDeck.remove(index1);
        myDeck.add(c);
     }
  }

. Мой вывод кажется перетасованным по номерам, но не по названию карты, например, пиковые червы и т. Д.,

Например, это мой вывод, когда я тестирую код:

Deuce of spades
Seven of spades
Eight of spades
Ace of spades
Three of hearts
Five of hearts
Six of hearts
Seven of hearts
Nine of hearts
Ten of hearts
Queen of hearts
King of hearts
Ace of hearts
Seven of diamonds
Eight of diamonds
Jack of diamonds
King of diamonds
Three of clubs
Seven of clubs
Nine of clubs
Jack of clubs
Queen of clubs
King of clubs
Ace of clubs
Queen of spades
Deuce of clubs
Three of spades
Nine of diamonds
Four of spades
Four of clubs
Deuce of hearts
Jack of spades
Ten of clubs
Six of diamonds
Jack of hearts
Six of clubs
Four of diamonds
Five of diamonds
Ace of diamonds
Four of hearts
Nine of spades
Ten of spades
Five of spades
Three of diamonds
Six of spades
Five of clubs
Deuce of diamonds
Eight of hearts
King of spades
Ten of diamonds
Eight of clubs
Queen of diamonds

Как всегда повторяющиеся имена. это неправильно, так как смысл перетасовки состоит в том, чтобы перепутать это?

Вот в чем собственно вопрос :При игре в карты важно, конечно, перетасовать колоду, т. е. расположите вещи так, чтобы карты были сданы в случайном порядке. Есть несколько способов добиться этого. Одна стратегия включает в себя многократное взятие карты. случайным образом из колоды и перемещая ее в конец. Следующий код использует класс Random (, с которым вы познакомились на странице 8 раздела «ArrayLists» онлайн-курс )для выполнения одной такой операции «выбрать и переместить в конец»:

Random rn = new Random();
int index1 = rn.nextInt( 52 );
Card c = myDeck.remove( index1 );
myDeck.add( c );

Чтобы эффективно перетасовать колоду, эту операцию следует повторять много раз. (скажем, 500 раз ). Создайте новый метод экземпляра shuffle для класса Deck. который использует один объект Random и цикл for для перемешивания myDeck. После соответствующим образом изменив основной метод, используйте его для тестирования нового кода.

Итак, мой главный вопрос: :я делаю это неправильно?

7
задан HostileFork 8 October 2012 в 04:42
поделиться