У меня проблема с рандомизацией списка с ограничениями в Python (3). Я видел несколько других вопросов, связанных с этим, но никто из них, похоже, не решил мою проблему. Я новичок, поэтому любая помощь очень ценится!Перетасовка списка с ограничениями в Python
Я разрабатываю эксперимент, используя два типа стимулов: формы и цвета (по четыре). Мне нужно, чтобы генерировать перестановки всех 16 комбинаций, которые я сделал с random.shuffle-функции:
import random
# letters are shapes, numbers are colors
x=["a1","a2","a3","a4","b1","b2","b3","b4","c1","c2","c3","c4","d1","d2","d3","d4"]
random.shuffle(x)
До сих пор так хорошо. Тем не менее, я хочу, чтобы фигура (буква) или цвет (число) появлялась два раза подряд в моем результате (например, «a2», а затем «a4» или «c2», за которым следует «a2»).
Есть ли способ сделать такое ограничение?
Заранее благодарим!
До сих пор так хорошо? 'random.shuffle (x)' возвращает None, потому что он перетасовывает 'x' на место. Поэтому 'result' будет None. – zondo
Это похоже на проблему с графом. Каждый узел имеет ребро, указывающее на все остальные узлы, за исключением тех, которые имеют одинаковую форму или цвет (так что (n-1)^2 ребра на узел). И тогда вам нужен случайный обход, который попадает в каждую вершину ровно один раз - гамильтоновский путь, я думаю. –
@zondo О, хорошо, спасибо, что указали это. Я исправил пример. – Frederik