Collections.shuffle (Список списка)

Что предложит использовать этот метод?

Обновление: Я вижу точку теперь. Мне нравится причина Uri "Перестановка, не тривиальный алгоритм". Это довольно верно.

6
задан fastcodejava 31 May 2010 в 07:05
поделиться

4 ответа

Может быть много причин, по которым вы захотите случайным образом перемешать упорядоченную последовательность элементов. Например, колода карт.

Перемешивание - нетривиальный алгоритм, так же как и сортировка - поэтому он достаточно распространен, чтобы потребовать библиотечную функцию.

Относительно того, почему список - очевидно, что это должна быть упорядоченная коллекция, а не какая-то общая коллекция. Гарантированно упорядочивается только список и его подтипы. Класс Collections не поддерживает операции с массивами, но вы можете (и, вероятно, должны для повышения производительности) передать ArrayList этому методу.

12
ответ дан 8 December 2019 в 12:18
поделиться

Гм , если у вас есть коллекция, и вы хотите ее перетасовать ...

Самым очевидным примером может быть карточная игра, в которой у вас есть объекты, представляющие отдельные карты, и коллекция, представляющая колоду, которую вы хотите перетасовать.

Другой пример: вы представляете пользователю несколько ответов в анкете и не хотите, чтобы возникла предвзятость из-за порядка ответов, поэтому вы представляете каждому пользователю перемешанный набор ответов. выбирать из.

5
ответ дан 8 December 2019 в 12:18
поделиться

Некоторые идеи, как можно использовать этот метод:

  • Перемешать карты в игре
  • Произвести случайный выбор массива в тестовом примере для алгоритма сортировки
  • Перемешать тестовые примеры в вашем тесте пакет, чтобы убедиться, что они не зависят друг от друга
  • . Если вы пытаетесь решить NP-полную задачу, например, коммивояжер, один из подходов состоит в том, чтобы взять ввод, перемешать его несколько раз, а затем использовать результат с наименьшим длина. Это дает вам решение, которое выполняется за время O (N) (где N - количество узлов).
1
ответ дан 8 December 2019 в 12:18
поделиться

Что ж, представьте, что вы моделируете колоду карт. Shuffle будет одной из первых функций, которые вы напишете.

Каждый раз, когда вы хотите рандомизировать содержимое коллекции, вы должны использовать перемешивание.

1
ответ дан 8 December 2019 в 12:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: