|
78 / 73 / 19
Регистрация: 18.05.2021
Сообщений: 287
|
|
Неслучайное перемешивание списка по ключу02.07.2023, 18:38. Показов 1581. Ответов 21
Метки нет (Все метки)
Как перемешать список по ключу так, чтобы можно было гарантировать, что любой различный ключ (в пределах диапазона) будет давать различный список?
В принципе подойдут и готовые библиотеки, хотя интересней были бы ссылки/подробное объяснение как это сделать. Я не смог ничего нагуглить по этому вопросу. П.С. В идеале принцип должен быть достаточно простым, но хорошо работающим. Ключи будут допускаться в пределах 100!, поэтому нужен алгоритм, который бы гарантировал, что получаемые списки по различным ключам различны. Такие алгоритмы есть, в принципе?
0
|
|
| 02.07.2023, 18:38 | |
|
Ответы с готовыми решениями:
21
Перемешивание списка Перемешивание списка Перемешивание списка |
|
526 / 179 / 58
Регистрация: 12.02.2023
Сообщений: 641
|
||
| 02.07.2023, 21:47 | ||
|
либо то что вы говорите ерунда, ибо , "ключ = значение" и нет смысла перемешивать их, иначе просто теряется смысл словаря собственно
1
|
||
|
78 / 73 / 19
Регистрация: 18.05.2021
Сообщений: 287
|
|
| 02.07.2023, 23:06 [ТС] | |
|
s_t_r_a_j, я спрашивал про списки, не про словари. Под ключом имелась в виду некое число, которое должна принимать на вход программа, возвращающая перемешенный список. На каждый ключ список должен перемешиваться по разному.
Условно, есть список [1, 2, 3]. На ключ 0 должно возвращаться [1, 2, 3], на ключ 1 [1, 3, 2], на ключ 2 [2, 1, 3], на ключ 3 [2, 3, 1] и т.д. Это не должен быть словарь с готовыми ключами и списками, так как количество перестановок равно n!, что для 100 элементов слишком много, нужен именно некий алгоритм, который сможет перемешать список так, чтобы не повторяться с разными ключами.
0
|
|
|
526 / 179 / 58
Регистрация: 12.02.2023
Сообщений: 641
|
||
| 02.07.2023, 23:18 | ||
|
0
|
||
|
78 / 73 / 19
Регистрация: 18.05.2021
Сообщений: 287
|
|
| 02.07.2023, 23:25 [ТС] | |
|
s_t_r_a_j, составить все виды перестановок для списка из 100 элементов? Это будет 9332621544394415268169923885626670049071 5968264381621468592963895217599993229915 6089414639761565182862536979208272237582 51185210916864000000000000000000000000. Немного не подъёмное количество и по времени и по памяти.
Тут весь вопрос именно в алгоритме, который сожет составить n'ую перестановку, не делая всех перестановок. Типа зная принцип получения каждой следующей перестановки, сразу получать конечный результат, без промежуточных перестановок. Добавлено через 1 минуту Welemir1, просто перестановки не подойдут, нужен способ получать результат как бы после выполнения простых перестановок, но без выполнения их непосредственно, условно найти зависимость.
0
|
|
|
526 / 179 / 58
Регистрация: 12.02.2023
Сообщений: 641
|
||||||
| 02.07.2023, 23:36 | ||||||
|
что представляют из себя ваши списки, что то типа этого...
0
|
||||||
|
Автоматизируй это!
|
|
| 02.07.2023, 23:46 | |
|
-_human_-, но мы знаем закономерность и можем получить не выполняя их непосредственно, если речь о простом сдвиге. Это можно представить как бесконечную последовательность элементов нашего списка (itertools.cycle) и мы для получения n-ной перестановки, чтобы не выполнять их несредственно просто берем слайс от этой последовательности от н-ного элемента на длину списка.
0
|
|
|
78 / 73 / 19
Регистрация: 18.05.2021
Сообщений: 287
|
|
| 03.07.2023, 00:56 [ТС] | |
|
Welemir1, там не просто сдвиги, а все возможные случаи размещения элементов в списке. В простейшем случае это будет перебор, условно последовательности 0 1 2 - 0 2 1 - 1 0 2 - 1 2 0 - 2 0 1 - 2 1 0, из порядка убывания перебор в порядке возрастания. Просто слайс не подойдёт.
Добавлено через 54 секунды s_t_r_a_j, списком являются первые 100 простых чисел.
0
|
|
|
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
|
|||||||
| 03.07.2023, 04:52 | |||||||
0
|
|||||||
|
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
|
||||||
| 03.07.2023, 05:26 | ||||||
|
-_human_-,
0
|
||||||
|
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
|
|
| 03.07.2023, 05:35 | |
|
Gdez, так это вы перестановку с каким номером вывели?
0
|
|
|
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
|
|
| 03.07.2023, 05:38 | |
|
idealist, “key”-ую )
0
|
|
|
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
|
||
| 03.07.2023, 06:13 | ||
|
0
|
||
|
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
|
||||||
| 03.07.2023, 06:50 | ||||||
|
idealist, тогда
0
|
||||||
|
32 / 24 / 11
Регистрация: 03.06.2023
Сообщений: 56
|
||||||
| 03.07.2023, 11:44 | ||||||
0
|
||||||
|
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,760
|
||||||
| 03.07.2023, 12:00 | ||||||
Добавлено через 5 минут Собственно, одному и тому же ключу в seed будет соответствовать одно и тоже перемешивание.
1
|
||||||
|
32 / 24 / 11
Регистрация: 03.06.2023
Сообщений: 56
|
|
| 03.07.2023, 12:09 | |
|
u235, попробуйте со списком [1, 2, 3]. С ключами 2 и 3 появляется коллизия
0
|
|
|
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,760
|
|
| 03.07.2023, 13:11 | |
|
Doule_, да, на мелких списках так и будет. Но вы же говорили, что у вас 100 элементов в списке.
0
|
|
| 03.07.2023, 13:11 | |
|
Помогаю со студенческими работами здесь
20
Перемешивание списка фамилий
Перемешивание списка фамилий Перемешивание списка фамилий Случайное перемешивание элементов списка Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2.
Задача: вывести данные из ТЧ нетипового документа. . .
|
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению.
На форме документа создается. . .
|
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
|
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
|
|
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
|
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию.
2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
|
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
|
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO
Апнулись до NET10.
Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта
так и в интерактивном режиме. из сложностей - чисто функциональный подход.
Решил. . .
|