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

Vektor mit Zufallszahlen

 

derrabe
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 28.01.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.01.2012, 08:51     Titel: Vektor mit Zufallszahlen
  Antworten mit Zitat      
hallo

miteinander.. ich bin noch relativ neu in matlab.

ich soll einen einspaltigen Vektor erstellen, in dem jede zeile einen Zufallswert enthält.. Die Summe dieser Werte soll genau 60 sein.

momentan habe ich das umständlich mit einer While Schleife gelöst.. also ich lasse mir für jeden zeile einen Wert mit randi erstellen und benutze dann
Sum(M) == 60 also abbruchkriterium meiner while schleife.. dies ist natürlich sehr ineffektiv, da ich quasi darauf warte, dass der zufall eintritt..

leider bin ich momentan etwas unkreativ wie ich das eleganter lösen könnte..

kann mir jemand anregungen geben?

wäre sehr nett
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 28.01.2012, 11:48     Titel: Re: Vektor mit Zufallszahlen
  Antworten mit Zitat      
Hallo derrabe,

Das Problem läßt sich nicht lösen. 60 zufällige Werte und eine bestimmte Summe widerspricht sich.

Wenn Du 59 Zufallszahlen bestimmt hast, ist damit der Wert der 60.sten definiert. Dies ergibt bereits eine Anleitung, wie die Aufgabe bearbeitet werden kann.

Lies nochmal "help randi" und "help rand" durch.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
derrabe
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 28.01.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.01.2012, 12:06     Titel:
  Antworten mit Zitat      
hmm

ich glaub ich habe vergessen zu erwähnen, dass mein vektor 8 zeilen hat

ich brauch also 8 zufällige Werte. für diese ist die Bedingung, dass ihre Summe 60 ergibt
Private Nachricht senden Benutzer-Profile anzeigen
 
rainer87
Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 22.01.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.01.2012, 13:58     Titel:
  Antworten mit Zitat      
ich nehm mal an, da du randi erwähnt hast , dass du nur natürliche zahlen meinst, sonst könnte man leicht mit rand einfach einen vektor mit entsprechender anzahl erstellen, und auf 60/8 als mittelwert normieren.
Code:

v=rand(8,1)
v=v/mean(v)*60/8
 


sonst hier vielleicht mit ceil und floor zum runden arbeiten,
oder eine andere moeglichkeit:
liefert aber manchmal auch zahlen mit wiederholung.

Code:

v=zeros(z,1);
z=8; % deine zeilen
summe=60; %deine summe
for idx=1:length(v)-1
    restsumme=summe-sum(v);
    maximalezahl=restsumme-sum(1:z-idx)
    zahl=randi(maximalezahl);
    v(idx)=zahl;
end
v(end)=summe-sum(v)
sum(v) %sollte immer 60 ausgeben
 
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.