Есть ли способ перетасовать массив строк так, чтобы в исходной позиции ни одна строка не была? Вращение не является опциейShuffeling string, так что в оригинальном месте нет объекта
ответ
Вы можете реализовать Fisher-Yates Shuffle, но на каждой итерации исключить текущую позицию из случайного диапазона. На самом деле это a common mistake, что снижает качество перетасовки.
EDIT: чтение, я вижу, что это на самом деле имеет имя: Sattolo's Algorithm.
Это всего лишь один метод. Я уверен, что есть более быстрые или более эффективные методы, но это работает отлично.
static Random r;
public static String[] shuffle(String[] input)
{
if(r == null) r = new Random();
String[] output = new String[input.length];
ArrayList<Integer> indices = new ArrayList<Integer>();
for(int i = 0; i < input.length; i++) indices.add(i);
for(int i = 0; i < output.length; i++)
{
int randomIndicesIndex = r.nextInt(indices.size());
int randomIndex = indices.get(randomIndicesIndex);
indices.remove(randomIndicesIndex);
output[i] = input[randomIndex];
}
return output;
}
Когда вызывается в цикле, он выводит этот результат:
01: Hilda, Quinn, Lyon, Danny, Rob, Clyde, Joe, Jeff, Samantha
02: Hilda, Samantha, Clyde, Danny, Lyon, Joe, Quinn, Rob, Jeff
03: Rob, Samantha, Hilda, Joe, Danny, Jeff, Lyon, Clyde, Quinn
04: Jeff, Lyon, Joe, Quinn, Clyde, Hilda, Rob, Danny, Samantha
05: Danny, Jeff, Hilda, Lyon, Joe, Samantha, Rob, Clyde, Quinn
06: Lyon, Danny, Jeff, Quinn, Rob, Hilda, Clyde, Samantha, Joe
07: Clyde, Hilda, Rob, Samantha, Lyon, Quinn, Danny, Jeff, Joe
08: Clyde, Jeff, Samantha, Danny, Quinn, Hilda, Joe, Lyon, Rob
09: Jeff, Samantha, Danny, Clyde, Rob, Joe, Quinn, Lyon, Hilda
10: Clyde, Samantha, Danny, Lyon, Rob, Hilda, Quinn, Jeff, Joe
Используется ли это с помощью известного алгоритма? –
@ user3000837 Может быть! Я понятия не имею. Я уверен, что кто-то использовал его раньше, но я просто решил проблему. Он использует немного больше памяти (массив индексов), чтобы улучшить скорость. – Entity
Это не решает проблему. Я все еще выполняю задания, которые находятся в одном месте. @TheAdamGaskins –
- 1. Начинающие, нуждающихся в помощи на shuffeling массив
- 2. Shuffle Array Так что нет двух ключей в одном и том же месте
- 3. Распечатка результатов в оригинальном порядке
- 4. На месте десериализация объекта
- 5. переписывают JavaScript, так что он не содержит "в любом месте
- 6. Добавление объекта в [String: [[String]]] Словарь
- 7. Закрепление URL, так что нет пространства
- 8. Фильтр Jira отсортирован так, что мои проблемы на первом месте
- 9. postview изображение в оригинальном размере
- 10. Что не так с удалением объекта здесь
- 11. Отозвать функция в оригинальном классе
- 12. Изменение объекта в месте Javascript
- 13. Управление модулями python, многократно обновляемыми как в локальном, так и в оригинальном репозитории
- 14. kineticjs - mask/содержать изображения, так что нет перекрытия
- 15. Regex нет специального символ в определенном месте
- 16. jQuery методы на оригинальном объекте javascript?
- 17. Обязательно Быстросортировать на месте (на месте) или нет?
- 18. Настройка activeFocus нажатием в любом месте объекта
- 19. Преобразование объекта [,] в String [,]
- 20. Что не так или нет в теге Struts 2 jQuery?
- 21. Что не так в подготовленном заявлении Регистрация [НЕТ ошибок?]?
- 22. Javascript устроен так, что все в порядке, когда нет Javascript?
- 23. Нет $ route на этом в компоненте vuejs. что не так?
- 24. Как реорганизовать код так, что его нет в основной теме
- 25. Null String или нет Null String?
- 26. Преобразование строки Юникода в оригинальном формате
- 27. Является ли String экземпляром объекта String()?
- 28. «Объект объекта» типа String
- 29. Что означает «на месте»?
- 30. экземпляров (-ов) типа нет, так что BlockBase подтверждает BlockOre
Как вы могли бы сделать, если есть только одна строка? –
Если вы переместите первую строку до конца, ни одна из них не находится в исходном положении. Будет ли это делать? –
Что делать, если в массиве «Хильда» есть два элемента, и оба переключаются? Два объекта были переключены, но значения одинаковы. Это приемлемо? – Entity