WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Zufallsmatrix mit Vorgegebenem Intervall, keine Zahl doppelt

 

DasHuhn
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 22.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.10.2013, 18:14     Titel: Zufallsmatrix mit Vorgegebenem Intervall, keine Zahl doppelt
  Antworten mit Zitat      
Hallo zusammen,

haben in der Uni jetzt mir Matlab angefangen und ich tu mich noch etwas schwer mit der Materie.

Wir haben jetzt die Aufgabe bekommen eine 3x3 Matrix zu erstellen,
die nur Zahlen von 0-8 erhalten soll.
Dabei sollen die Zahlen in dieser Matrix zufällig angeordnet sein und keine Zahl darf doppelt vorkommen.

Sinn und zweck dieser Übung ist es später diese Matrix durch verschiedene Rechen und Umstelloperationen in die Form

1 2 3
4 5 6
7 8 0

zu bringen. (ähnlich wie bei einem Slide-Puzzle)

Jetzt hab ich allerdings schon direkt am Anfang bei der Erzeugung dieser Matrix Probleme.

Ich bekomme es zwar hin über folgende Funktion eine Matrix mit den Zahlen von 1-9 zufällig angeordnet zu erzeugen aber nicht von 0-8.

Code:

N = 9; m = 3; n = 3;
reshape(randperm(N, m*n), m, n)


mit der funktion

Code:


bekomme ich es zwar hin das der Zahlen von 0-8 nimmt, allerdings kommen dabei auch Zahlen doppelt vor.

wenn ich versuche die beiden Sachen zu kombinieren wie z.B.

Code:
N = floor(rand*8); m = 3; n = 3;
reshape(randperm(N, m*n), m, n)


bekomme ich die Fehlermeldung:
Error using randperm
Inputs must be nonnegative scalar integers.

ich weiß das randperm Zahlen von 1 -n zufällig anordnet.

wäre nett wenn mir jemand bei diesem Problem weiterhelfen könnte.
Private Nachricht senden Benutzer-Profile anzeigen


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 22.10.2013, 18:24     Titel:
  Antworten mit Zitat      
Zitat:



Ich bekomme es zwar hin über folgende Funktion eine Matrix mit den Zahlen von 1-9 zufällig angeordnet zu erzeugen aber nicht von 0-8.


Ziehe einfach 1 ab:
Code:

N = 9; m = 3; n = 3;
reshape(randperm(N, m*n), m, n)-1
Private Nachricht senden Benutzer-Profile anzeigen
 
DasHuhn
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 22.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.10.2013, 18:33     Titel:
  Antworten mit Zitat      
Danke für die schnelle Antwort.
Funktioniert jetzt.

Jetzt stellt sich mir die Frage wie man es am besten realisieren kann,
die Matrix nur durch Umstellen von Zahlen um die 0 herum, sie in die Form

1 2 3
4 5 6
7 8 0

zu bekommen.

Wie bei einem Slide-Puzzle soll die Null die Leerstelle symbolisieren und nur Zahlen um sie herum können/dürfen verschoben werden.

Das Problem ist, das ich noch nicht soweit in dem Programm eingearbeitet bin, dass ich weis was es da alles für Möglichkeiten gibt.

Bzw. ist die überhaupt möglich?
Oder würde es mehr sinn ergeben dafür eine vorgegebene Matrix zu nehmen?
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 23.10.2013, 21:05     Titel:
  Antworten mit Zitat      
Hallo
Zitat:


Oder würde es mehr sinn ergeben dafür eine vorgegebene Matrix zu nehmen?


Verstehe nicht, was damit meinst.

Zitat:

Bzw. ist die überhaupt möglich?


Ja das ist möglich. Logische Indizierung nutzen,
Nachbarn um der 0-Stelle suchen, dann kannst z.B in Brutforce Manier also in der WHILE Loop- Zahlen mit der Nullstelle solange mit zufälligen Nachbarn tauschen, bis das erwünschte Ergebnis eintritt.
Ansonsten musst da schon eine gewisse Logik rein, sonst kann Bruteforce ja ewig dauern.
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.