Задать вопрос
Этот вопрос закрыт для ответов, так как повторяет вопрос Получить все возможные комбинации элементов списка?
@skweartman

Как перемешать между собой слова создав новые?

Сгенерировать из 10 слов, предложения не повторящиеся между собой и обязательно 10 слов чтобы были, просто местатми менялись
ama aba duk tak god array cloud should ten tea

пример:
tea ama aba duk tak god array cloud tea ten
  • Вопрос задан
  • 128 просмотров
Подписаться 1 Простой 3 комментария
Ответы на вопрос 2
mayton2019
@mayton2019
Bigdata Engineer
Почти во всех языках разработки есть функция shuffle которая случайным образом тасует массив как колоду карт.
Вот как тут пишут https://www.geeksforgeeks.org/shuffle-an-array-in-... с помощью numpy.

Есть еще генераторы перестановок (permutations) там можно получить не случайные а последовательные и неповторяющиеся перестановки. Например для массива из 10 слов можно получить больше 3 млн новых массивов.
Ответ написан
wataru
@wataru
Разработчик на С++, экс-олимпиадник.
Т.е. вам надо сгенерировать перестановку заданных слов? Ну без разницы же, что перемешивать: числа или слова.
Получите массив из ваших слов, разбив строку по пробелам. Потом перемешайте массив стандартным алгоритмом. Потом выведите их через пробел.

Стандартный алгоритм перемешивания таков:
for i in range(len(a)):
  j = random.randint(0, i);
  a[i], a[j] = a[j], a[i]


Тут поддерживается инвариант, что первые i элементов равномерно и случайно перемешаны. На каждой итерации выбирается случайная позиция для нового элемента (возможно последняя и элемент никуда не переместится). Дальше достаточно только лишь поменять новый элемент со стоящим на его месте. Ведь по инварианту все остальные элементы уже случайно перемешаны и в итоге случайно перемешанными оказываются N+1 элементов.
Ответ написан
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы