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 aus zufallszahlen

 

Naji

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.11.2012, 23:01     Titel: vektor aus zufallszahlen
  Antworten mit Zitat      
hallo

ich soll einen einspaltigen Vektor erstellen, in dem jede zeile einen Zufallswert, der zwischen 1000 und 3000 liegt. Die Summe dieser Werte soll genau 76508931 sein.



kann mir jemand dabei helfen?

danke
naji


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 17.11.2012, 23:52     Titel:
  Antworten mit Zitat      
Hallo,

wie sollen die Zufallszahlen verteilt sein?
wieviele sollen es sein?
Das mit dem Zufall wird etwas schwierig, wenn andererseits bestimmte Kriterien ganz genau erfüllt werden sollen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Naji

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.11.2012, 23:58     Titel:
  Antworten mit Zitat      
hallo,
es sollen 100 Zeilen sein, die werte der zufallszahlen liegen zwischen 1000 und 3000. Die Summe dieser zufallszahlen soll 76508931 sein

danke
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.11.2012, 00:34     Titel:
  Antworten mit Zitat      
Hallo,

selbst wenn die 100 Zeilen jeweils den Wert 3000 haben, ist die Summe 300000. Sie kann also die von dir genannte Zahl nicht erreichen.

Das Intervall alleine ist keine ausreichende Information darüber, wie die Zahlen innerhalb des Intervalls verteilt sein sollen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Naji

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.11.2012, 00:41     Titel:
  Antworten mit Zitat      
hallo,
hier ist ein programm aus matlab forum mit der neuen angaben

Code:
infim = 6000 ;
suprem = 1000000 ;

    mmm    =    100;
    nnn    =    1;

e = infim + (suprem-infim).*rand(mmm, nnn);
v = ceil(e);
v = int8(f);

z=100;
summe=76508931;
for idx=1:length(v)-1
    restsumme=summe-sum(v);
    maximalezahl=restsumme-sum(1:z-idx);
    zahl=rand(maximalezahl);
    v(idx)=zahl;
end
v(end)=summe-sum(v) ;
sum(v)
 

beim laufen zeigt er einen fehler bei v(idx) = zahl was ich nicht verstehen kann
danke viel mals

[Bitte Code-Umgebung verwenden - Danke! Jan]
 
Harald
Forum-Meister

Forum-Meister


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

ja, sollen die Zahlen nun zwischen 1000 und 3000 oder zwischen 6000 und 1 Million sein? Es scheint nun, dass du mit in dem Intervall gleichmäßig verteilten ganzen Zahlen arbeiten möchtest.

Wenn du eine Fehlermeldung hast, kopiere sie bitte hier rein.

In diesem Code wird mit zahl=rand(maximalezahl); eine quadratische Matrix von Zufallszahlen zwischen 0 und 1 erzeugt. Dann wird versucht, das einem Eintrag eines Vektors zuzuweisen, was natürlich nicht gehen kann. Schon gar nicht, wenn diese Matrix dann 28 Mio. Zeilen und Spalten haben soll. Das hättest du mit dem Debugger und einem Blick auf den Workspace auch selbst leicht feststellen können.
Meine Vermutung ist, dass du randi statt rand verwenden wolltest.

Damit die Summe stimmt, müsste die vorletzte Zeile so lauten:
Code:
v(end)=summe-sum(v(1:end-1)) ;


Wichtig ist nun, dass die Zufallszahlen nicht in dem Sinn zufällig sind, dass jede Zahl alle Möglichkeiten annehmen kann.
Zudem scheint dein Code nicht das gewünschte zu machen, v(1) ist bei mir nämlich 22887308.

Bitte auch die Code-Umgebung verwenden.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Naji

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.11.2012, 15:52     Titel:
  Antworten mit Zitat      
hallo,
der interval in dem die zahlen liegen sollen ist nicht wichtig kann man selber aussuchen, aber das wichtige ist die summe dieser 100 zahlen muss 76508931 sein
also ich muss einen zufallsvektor mit mit 100 zeilen und eine spalten die summe der spalte soll 76508931.

danke sehr
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 18.11.2012, 17:44     Titel:
  Antworten mit Zitat      
Hallo Naji,

Bitte bedenke, das die freiwilligen Helfer hier ihre Zeit einsetzen, um Dich bei der Lösung Deiner Probleme zu unterstützen. Wichtige Informationen wie die, dass sich der User das Intervall selbst aussuchen kann, erst nach längerer Diskussion zu posten, ist demotivierend.

Hier wurden bisher so viele sinnvolle Vorschläge gemacht, dass Du Dir das nötige daraus gut zusammen suchen kannst. Bitte versuche dies und wenn dann noch konkrete Probleme auftauchen, kannst Du sie hier zusammen mit dem Code posten.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.11.2012, 21:53     Titel:
  Antworten mit Zitat      
Hallo,

ich halte es zwar nicht für sinnvoll, aber wenn du wirklich x-beliebige Zufallszahlen haben willst, die aufsummiert diese Zahl ergeben, dann kannst du sie haben:

Code:
x = rand(100, 1);
x = x/sum(x)*76508931;


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 - 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.