Ich denke, dass diese Frage von allen beantwortet werden könnte, aber um mehr Hintergrund zu geben, verwende ich Python, um für Rhino zu kodieren. Mein Ziel ist es, eine Anzahl von Kurven aus X Punkten zu erstellen. Die Punkte müssen auch zufällig in einem 10 × 80 × 20-Einheiten-Rechteckprisma angeordnet sein. Ich begann mit diesem:(Python) Erstellen von "X" -Punkten der Form p = [a, b, c] mit einer for-Schleife und dann randomisieren a, b, c innerhalb von p = [a, b, c] 'Y' mal mit einer zweiten für Schleife?
import rhinoscriptsyntax as rs
import random
crvNumber = 300
numRandPts = 5
xLength = 10
yLength = 80
zLength = 20
crvArray = []
crvPtArray = []
for j in range(0,numRandPts):
ptj = [xLength*random.random(),yLength*random.random(),zLength*random.random()]
crvPtArray.append(ptj)
for i in range(0,crvNumber):
curves = rs.AddCurve (crvPtArray, degree = numRandPts)
crvArray.append(curves)
Ich bin sicher, dass Sie sofort erkennen können, dass dies nicht funktionieren, weil die Erzeugung der Zufallspunkte innerhalb der ersten for-Schleife auftritt, und als Ergebnis einfach die zweiten for-Schleife gibt die gleiche zufällige Kurve 300 Mal aus. Hat jemand eine Idee, wie ich eine bestimmte Anzahl von Punkten mit der ersten Schleife generieren und dann ihre Werte in der zweiten for-Schleife zuweisen könnte, so dass ich am Ende 300 Kurven mit j zufälligen Punkten habe? Ich habe das in den letzten 2 Stunden ohne Erfolg erforscht. Meine erste Umgehungsidee war, dass es vielleicht einfacher wäre, einfach eine Menge von 1000 zufälligen Punkten zu generieren und dann j davon in der zweiten for-Schleife zu wählen. Allerdings stieß ich auf das Problem, nicht aus einer Liste ("Liste Objekte sind nicht hashable" -Fehler) mit diesem Code (ich kopierte im Grunde das for k in random.sample-Bit aus einem Beispiel, das ich hier gefunden):
Von hier aus stolperte ich irgendwie über die Wörterbücher in Python und testete diese, konnte aber keine Möglichkeit finden, nur die Liste der im Wörterbuch gespeicherten "Definitionen" und nicht die angehängten "Wörter" auszudrucken durch einen Doppelpunkt zu den "Definitionen". Und dann erkannte ich, dass selbst wenn ich das tun könnte, die Randomisierung immer noch im Wörterbuch für die Schleife stattfinden würde, nicht in der Kurven erzeugenden for-Schleife (es sei denn, ich liege falsch und würde in der zweiten for-Schleife randomisieren). Also versuchte ich, leere Punkte mit pt [j] = [] zu erzeugen und versuchte irgendwie die Randomisierung in der kurvenbildenden for-Schleife zu erreichen. Leider hatte ich keinen wirklichen Erfolg, da ich zu diesem Zeitpunkt völlig überfordert war und nur versuchte, Code zu schreiben, der so aussah, als würde er funktionieren.
Gibt es eine Möglichkeit, X leere Variablen oder Punkte zu erstellen und sie dann rückwirkend zu definieren/zufällig zu setzen? Gibt es eine Möglichkeit, meine Set-und Stichproben-Idee zu funktionieren? Gibt es eine Art verrücktes verschachteltes Coding oder etwas, das dafür funktionieren könnte? Jeder Einblick, den Sie bieten könnten, wäre sehr willkommen.
(ich es irgendwelche wirklich wirklich wirklich dumme Fehler in meinem Code, den sie wahrscheinlich Transkriptions sind, aber wenn es keine wirklich dumme Fehler sind solche, vielleicht mein sein;))
Ist nicht die einfache Lösung, die beiden Schleifen zu verschachteln?Mit anderen Worten, wiederhole die Erzeugung von zufälligen Punkten für jede Kurve? –