LabVIEWForum.de - Wie kann man eine zufällige Matrix erzeugen

LabVIEWForum.de

Normale Version: Wie kann man eine zufällige Matrix erzeugen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo, ich hab eine kleine Frage für die Mathematik Könner unter euch.
Ich hab eine Matrix, diese besitzt eine 4 stellige Anzahl an Zeilen.
Ich möchte aus dieser Matrix eine weitere erzeugen, indem ich zufällige Zeilen auswähle. Hier liegt das Problem. Ich weiss nicht wie man das bewerkstelligen könnte.
Meine erste Idee ist, ich würfel eine Zahl n, und nehme dann die ersten/letzen n Zeilen, das ist dann meine neue Matrix. Hier ist das Problem, dass bestimmte Zeilen nicht berücksichtigt werden.
Eine weitere Idee wäre, eine Zahl n zu würfeln, diese Zahl definiert die Nummer der gepickten Zeile, und diese wird an die erste Stelle der neuen Matrix geschoben. Dieser Vorgang wird so oft wiederholt, bis die neue Matrix eine genügende Anzahl an Zeilen besitzt. Hier ist das Problem, dass es vorkommen kann, dass eine Zahl mehrmals gewürfelt wird. Lösung dafür wäre einfach eine Wiederholung zu ignorieren und weiter zu würfeln. Ein weiteres Problem ist die Rechenzeit, da es sich hier um 4 stellige Zeilenanzahl handelt (die neue Matrix muss auch 4 stellige Zeilenanzahl besitzen).

Hat jemand vllt. eine Idee, wie so etwas noch funktionieren könnte?

Grueße.
Hallo bmtil,

es gibt eine Funktion, die dir ein 1D-Array "verwürfelt" oder "randomized". Leider finde ich dieses jetzt gerade nicht, entweder findet es sich in den Tiefen der vi.lib oder bei OpenG...

Damit kannst du bequem deine Zeilennummern verwürfeln. Mit dem Ergebnis rufst du eine Schleife auf, die aus dem Originalarray die entsprechende Zeile indiziert und in ein Zielarray einträgt. Mit ordentlicher Inplace-Programmierung nimmt das nicht "soviel" Rechenzeit...
(03.05.2012 09:29 )GerdW schrieb: [ -> ]Hallo bmtil,

es gibt eine Funktion, die dir ein 1D-Array "verwürfelt" oder "randomized". Leider finde ich dieses jetzt gerade nicht, entweder findet es sich in den Tiefen der vi.lib oder bei OpenG...

Damit kannst du bequem deine Zeilennummern verwürfeln. Mit dem Ergebnis rufst du eine Schleife auf, die aus dem Originalarray die entsprechende Zeile indiziert und in ein Zielarray einträgt. Mit ordentlicher Inplace-Programmierung nimmt das nicht "soviel" Rechenzeit...

Naja, es war jeher eine prinzipielle, als eine Labview Frage ^^ Hab mir eben auch folgendes ausgedacht:

Man wuerfelt zwei Zahlen. Erste Zahl k bestimmt den "Startwert", ab der Zeile mit dieser Nummer, werden die Zeilen gepickt. Die Anzahl der gepickten Zeilen bestimmt die zweite gewürfelte Zahl n. Vorgang wird so oft wiederholt bis die neue Matrix voll ist.

Geht momentan jeher auch um eine prinzipielle Frage, als LabView, ich muss den Kram in Matlab schreiben (was eigentlich ziemlich nervig ist, da LabView=super toll, ok Matlab auch, muss das halt noch lernen).

Aber die Antwort ist aufjedenfall ein ordentlicher Denkanstoß, vielen Dank.
Also wenn es darum geht, dass jede Zeile der "Vorgabematrix" in der neu gemischten Matrix nur 1x vorkommen darf, hier eine LabVIEW-Umsetzung für die zufällige Reihenfolge der Zeilenindices:
[attachment=39692]
Gruß, Jens
Referenz-URLs