|
|
Vektor Shuffle - keine direkte Wiederholung |
|
scanka |

Forum-Anfänger
|
 |
Beiträge: 23
|
 |
|
 |
Anmeldedatum: 18.09.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 10.03.2015, 11:23
Titel: Vektor Shuffle - keine direkte Wiederholung
|
 |
Hi,
ich würde gern den Vektor a = [1 1 1 1 1 1 1 1 1 1 2 2 2 2 2] so shuffeln, dass eine "2" nicht direkt aufeinanderfolgen darf.
Wie gehe ich dieses Problem am besten an?
Danke im Voraus für Tipps!
|
|
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 10.03.2015, 12:21
Titel: Re: Vektor Shuffle - keine direkte Wiederholung
|
 |
Hallo scanka,
Was hast Du bisher versucht und welche Probleme sind dabei aufgetreten?
Welche Ansprüche hast Du an die Effizienz? Wäre als ein Brute-Force-Ansatz brauchbar, indem Du einfach zufällig permutierst und die falschen Ergebnisse verwirfst? Geht es nur um so kleine Vektoren, so dass Du auch einen einfachen konstruktiven Ansatz mit geschachtelten WHILE-Schleifen verwenden kannst?
Benötigst Du alle möglichen Lösungen? Oder nur irgendeine?
Ein Ansatz wäre auch die möglichen Indices zu finden und dann zufällig 5 davon auszusuchen:
Funktioniert das? Ich kann es gerade nicht testen. Aber die Idee ist klar, oder?
Gruß, Jan
|
|
|
scanka |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 23
|
 |
|
 |
Anmeldedatum: 18.09.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 11.03.2015, 04:46
Titel:
|
 |
cool, danke fuer die hinweise.
ich habe es jetzt so gelöst:
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 11.03.2015, 11:10
Titel:
|
 |
Hallo scanka,
Was macht die Funktion "shuffle"? Ist es die Mex-Funktion aus Matlab's FileExchange, allerdings in Kleinbuchstaben?
Hast Du einen Grund diese Funktion zweimal hintereinander anzuwenden? Wenn es sich um eine zufällige Permutation handelt, ist die zweimalige Anwendung nicht zufälliger, im Gegenteil!
Die Umwandlung von A in einen String ist nicht hilfreich hier. Man kann alle Rechenschritte einfacher mit Zahlen durchführen und sich so die umständliche Hin- und Her-Umwandlung sparen.
Das Umsortieren der Indices mit SORT('descend') ist sehr ineffizient.
Viel einfacher ist es, die Schleife wegzulassen:
Dann ist auch kein Sortieren nötig.
Das größte Problem aber bleibt: Es wird in Deinem Code gar nicht beachtet, dass nicht 2 Zahlen aufeinander folgen dürfen! Das war aber doch der Sinn des Programms, oder?
Gruß, Jan
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|