|
|
| 82kolu |

Forum-Anfänger
|
 |
Beiträge: 25
|
 |
|
 |
Anmeldedatum: 08.04.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 20.04.2012, 11:37
Titel: random integer zahlen
|
 |
Hey hey,
ich moechte beliebig viele integer zahlen erzeugen. allerdings keine doppelt. mit dem befehl
erzeuge ich inter zahlen bis maximal 10 in einer 100x100 matrix
aber wenn ich beispielsweise
mache moechte ich eine matrix die nur verschiedene eintraege hat.
wisst ihr wie / ob das geht
mit
geht es besser aber die zahlen sind doppelt
gruesse
Zuletzt bearbeitet von 82kolu am 20.04.2012, 11:57, insgesamt einmal bearbeitet
|
|
|
|
|
|
| Harald |

Forum-Meister
|
 |
Beiträge: 24.502
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 20.04.2012, 11:57
Titel:
|
 |
Hallo,
für eine mxn-Matrix mit Einträgen von 1-N:
Grüße,
Harald
|
|
|
|
| Ajax |

Forum-Century
|
 |
Beiträge: 176
|
 |
|
 |
Anmeldedatum: 09.09.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 20.04.2012, 12:00
Titel:
|
 |
Hallo,
ich würde evtl. randperm() verwenden.
Beispiel:
Erzeuge dir einen Vektor 1:n, welcher deutlich größer ist als der Benötigte. Im Anschluss würfelst du den Vektor zufällig durch und wählst die ersten Stellen (so viele, wie dein Vektor groß sein soll):
Ist das in etwa, was du dir vorgestellt hast?
mfg
Ajax
|
|
|
|
| aj.geissler |

Forum-Guru
|
 |
Beiträge: 251
|
 |
|
 |
Anmeldedatum: 26.11.07
|
 |
|
 |
Wohnort: Seeheim-Jugenheim
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 20.04.2012, 12:04
Titel:
|
 |
| |
 |
|
Hi,
hatte früher auch das Problem. Habe mir mit einem Workaround beholfen.
Dieser erzeugt zunächst einen Vektor mit zufälligen ganzzahligen Werten, von denen jeder nur jeweils einmal vorkommt.
Für eine matrix müsste man in Matlab mit reshape den vektor in eine Matrix wandeln.
Leider kann ich Dir nur meine sciLab-Version anführen, da ich seit einiger Zeit nur mit Open Source Programmen arbeite.
| Zitat: |
function a=randvek(N)
// RANDVEK
// A=RANDVEK(N)
//
// Creation of a vector with length N with,
// numbers from 1 ... N on random positions.
//
// Every number occurs only one time in the vector !
if length(N)==1 then,
a=zeros(1,N);
posvek=1:1:N; // Positionsliste
valvek=1:1:N; // Werteliste
// nicht vergebener Werte
Nz=N;
while Nz>0,
k0=ceil(length(posvek) .*rand(1,1)); // Position und Wert (noch frei)
v0=ceil(length(valvek) .*rand(1,1)); // zufällig auswählen
position=posvek(1,k0);
value=valvek(1,v0);
a(position)=value; // Ergebnisvektor aufbauen
posvek=posvek(posvek~=position); // Listen aktualisieren
valvek=valvek(valvek~=value);
Nz=Nz-1;
end
else
a=[];
end
endfunction
|
Eine andere Möglichkeit:
Erzeuge mit randi einen Vektor der Länge z.B. 10000 mit Werten von 1 bis 100. Dann mit dem befehl unique mehrfach vorkommende Werte eliminieren. Falls man dann einen Vektor der Länge > 100 noch haben sollte, einfach die ersten 100 Werte in eine 10 x 10 Matrix mittels reshape ausgeben.
Viel Spass
|
|
|
|
| 82kolu |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 25
|
 |
|
 |
Anmeldedatum: 08.04.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 20.04.2012, 12:19
Titel:
|
 |
| Harald hat Folgendes geschrieben: |
Hallo,
für eine mxn-Matrix mit Einträgen von 1-N:
Grüße,
Harald |
Hey vielen Dank fuer deine super Hilfen immer!
mit dem m*n gehts zwar nicht aber mit klappts! danke
|
|
|
|
| Harald |

Forum-Meister
|
 |
Beiträge: 24.502
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 20.04.2012, 12:31
Titel:
|
 |
Hallo,
ich habe es gerade nochmal ausprobiert, und es geht an sich wunderbar, z.B. für eine 9x9-Matrix mit Einträgen von 1 bis 100:
Oder auch
Meine Variante war halt etwas allgemeiner, da ich nicht sicher war, was du genau willst
Grüße,
Harald[/code]
|
|
|
|
| soad |

Forum-Century
|
 |
Beiträge: 150
|
 |
|
 |
Anmeldedatum: 10.11.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 20.04.2012, 12:45
Titel:
|
 |
|
RANDPERM mit zwei Eingabeparametern ist erst ab R2011b verfügbar.
|
|
|
|
| Harald |

Forum-Meister
|
 |
Beiträge: 24.502
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 20.04.2012, 13:05
Titel:
|
 |
Hallo soad,
das wird's sein.
In dem Zusammenhang wäre es natürlich gut, wenn Leute grundsätzlich (in ihrem Profil) angeben würden, wenn sie nicht mit der aktuellsten Version arbeiten. Dann kann man das (soweit vorhanden) ggf. auch in der jeweiligen Version testen.
Grüße,
Harald
|
|
|
|
|
|
|
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 - 2026
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.
|
|