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

random integer zahlen

 

82kolu
Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 08.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.04.2012, 11:37     Titel: random integer zahlen
  Antworten mit Zitat      
Hey hey,
ich moechte beliebig viele integer zahlen erzeugen. allerdings keine doppelt. mit dem befehl

Code:


erzeuge ich inter zahlen bis maximal 10 in einer 100x100 matrix

aber wenn ich beispielsweise
Code:

mache moechte ich eine matrix die nur verschiedene eintraege hat.

wisst ihr wie / ob das geht


mit
Code:
randi(s,100,1,100)

geht es besser aber die zahlen sind doppelt

gruesse Wink

Zuletzt bearbeitet von 82kolu am 20.04.2012, 11:57, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.04.2012, 11:57     Titel:
  Antworten mit Zitat      
Hallo,

für eine mxn-Matrix mit Einträgen von 1-N:

Code:


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Ajax
Forum-Century

Forum-Century


Beiträge: 176
Anmeldedatum: 09.09.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.04.2012, 12:00     Titel:
  Antworten mit Zitat      
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):
Code:

n = 100000;
m = 1000;   % Anzahl der benötigten Stellen
x = 1:n;
xRand = randperm(x);
xRand = xRand(1:1000);
 

Ist das in etwa, was du dir vorgestellt hast?
mfg
Ajax
Private Nachricht senden Benutzer-Profile anzeigen
 
aj.geissler
Forum-Guru

Forum-Guru



Beiträge: 251
Anmeldedatum: 26.11.07
Wohnort: Seeheim-Jugenheim
Version: ---
     Beitrag Verfasst am: 20.04.2012, 12:04     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
82kolu
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 08.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.04.2012, 12:19     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Hallo,

für eine mxn-Matrix mit Einträgen von 1-N:

Code:


Grüße,
Harald


Hey vielen Dank fuer deine super Hilfen immer!
mit dem m*n gehts zwar nicht aber mit klappts! danke
Code:
n=100

B = reshape(randperm(n), n,1) ;

B
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.04.2012, 12:31     Titel:
  Antworten mit Zitat      
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:
Code:
N = 100; m = 9; n = 9;
reshape(randperm(N, m*n), m, n)


Oder auch
Code:
N = 100; m = 100; n = 1;
reshape(randperm(N, m*n), m, n)


Meine Variante war halt etwas allgemeiner, da ich nicht sicher war, was du genau willst Smile

Grüße,
Harald[/code]
Private Nachricht senden Benutzer-Profile anzeigen
 
soad
Forum-Century

Forum-Century


Beiträge: 150
Anmeldedatum: 10.11.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.04.2012, 12:45     Titel:
  Antworten mit Zitat      
RANDPERM mit zwei Eingabeparametern ist erst ab R2011b verfügbar.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.04.2012, 13:05     Titel:
  Antworten mit Zitat      
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
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 - 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.