Ich habe ein Problem mit der Randomisierung einer Liste mit Einschränkungen in Python (3). Ich habe ein paar andere Fragen dazu gesehen, aber keine von ihnen scheint wirklich mein Problem zu lösen. Ich bin ein Anfänger, also wird jede Hilfe sehr geschätzt!Mischen einer Liste mit Einschränkungen in Python
Ich entwerfe ein Experiment mit zwei Arten von Reizen: Formen und Farben (jeweils vier). Ich brauche Permutationen aller 16 Kombinationen zu erzeugen, die ich mit random.shuffle-Funktion getan haben:
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)
So weit so gut. Ich möchte jedoch vermeiden, dass eine Form (Buchstabe) oder Farbe (Nummer) zweimal hintereinander in meinem Ergebnis erscheint (z. B. "a2", gefolgt von "a4" oder "c2", gefolgt von "a2").
Gibt es eine Möglichkeit, eine solche Einschränkung zu machen?
Vielen Dank im Voraus!
So weit so gut geben? 'random.shuffle (x)' gibt None zurück, weil es 'x' an der richtigen Stelle mischt. Daher wird "Ergebnis" Keine sein. – zondo
Dies scheint ein Graphproblem zu sein. Jeder Knoten hat eine Kante, die auf alle anderen Knoten zeigt, mit Ausnahme der Knoten mit der gleichen Form oder Farbe (also (n-1)^2 Kanten pro Knoten). Und dann wollen Sie eine zufällige Traversierung, die jeden Scheitel genau einmal trifft - einen Hamilton-Pfad, denke ich. –
@zondo Oh, richtig, danke, dass du das gezeigt hast. Ich habe das Beispiel korrigiert. – Frederik